Похоже, что это ошибка в achartengine.Это происходит в демо их приложения тоже.Похоже, что точки, построенные справа, не соответствуют всем стилям рендерера.
Если ваша диаграмма статична, вы можете попробовать настроить с осью X max и min.Это, кажется, немного сдвинуло с места.
renderer.setXAxisMax(0);
renderer.setXAxisMin(0);
edit:
Попробуйте это
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.chart_activity);
List<double[]> x = new ArrayList<double[]>();
x.add(new double[] {1, 2, 3, 4, 5});
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] {10, 20, 30, 40, 50});
int[] colors = new int[] { Color.BLUE,Color.YELLOW,Color.YELLOW};
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND,
PointStyle.TRIANGLE, PointStyle.SQUARE };
renderer = new XYMultipleSeriesRenderer(3);
setRenderer(renderer, colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
renderer.setChartTitle("Weight / Temperature");
renderer.setXLabels(12);
renderer.setXTitle("Month");
renderer.setXAxisMin(1);
renderer.setXAxisMax(12);
renderer.setXLabelsAlign(Align.CENTER);
renderer.setYLabels(12);
renderer.setYTitle("Weight", 0);
renderer.setYTitle("Temperature", 1);
renderer.setYAxisMin(10, 0);
renderer.setYAxisMax(60,0);
renderer.setYAxisMin(10, 1);
renderer.setYAxisMax(60,1);
renderer.setYAxisAlign(Align.LEFT, 0);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 0);
renderer.setYLabelsAlign(Align.RIGHT, 1);
renderer.setAxesColor(Color.LTGRAY);
renderer.setLabelsColor(Color.LTGRAY);
renderer.setShowGrid(true);
renderer.setGridColor(Color.GRAY);
renderer.setZoomButtonsVisible(true);
renderer.setPanLimits(new double[] { 0, 12, 0, 12 });
dataset = buildDataset(new String[] {"Body Weight"}, x, values);
values.clear();
values.add(new double[] {10, 20, 30, 40, 50}); //whatever values you want to set
addXYSeries(dataset, new String[] { "Body Temperature" }, x, values, 0);
values.clear();
values.add(new double[1]);
addXYSeries(dataset, new String[] {"Body Temperature"}, x, values, 1);
}
Это мой код из демо, которое работает
public Intent execute(Context context) {
String[] titles = new String[] { "Crete" };
List<double[]> x = new ArrayList<double[]>();
for (int i = 0; i < titles.length; i++) {
x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
}
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2,
13.9 });
int[] colors = new int[] { Color.BLUE, Color.YELLOW, Color.YELLOW,};
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND, PointStyle.TRIANGLE, PointStyle.SQUARE };
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(3);
setRenderer(renderer, colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++) {
((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
setChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 12.5, 0, 32, Color.LTGRAY, Color.LTGRAY);
renderer.setXLabels(12);
renderer.setYLabels(10);
renderer.setShowGrid(true);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setZoomButtonsVisible(true);
renderer.setPanLimits(new double[] { -10, 20, -10, 40 });
renderer.setZoomLimits(new double[] { -10, 20, -10, 40 });
renderer.setYTitle("Hours", 1);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 1);
renderer.setXLabelsAlign(Align.RIGHT);
XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);
values.clear();
values.add(new double[] { 12.3, 4.9, 5.9, 8.8, 10.8, 11.9, 13.6, 12.8, 11.4, 9.5, 7.5, 5.5 });
addXYSeries(dataset, new String[] { "Sunshine hours" }, x, values, 0);
x.clear();
x.add(new double[1]);
addXYSeries(dataset, new String[] { "Sunshine hours" }, x, values, 1);
Intent intent = ChartFactory.getLineChartIntent(context, dataset, renderer, "Average temperature");
return intent;
}