在achartengine演示源代码中的示例显示错误的结果

问题描述:

其实我正在为android的图表工具工作。虽然搜索我得到achartengine工具,我下载了演示源代码。在这个源文件中有一个MultipleTemperatureChart.java的例子。在这个例子中,它绘制了两个y轴和一个x轴的图。 我注意到的奇怪的事情是,当我在代码中简单地通过我自己的值而不是示例代码中给出的值时。我注意到的是,对左y轴和x轴的图形图很好。但是使用正确的y轴和x轴的图形图是错误的。为什么发生这种情况是代码中的任何错误。我在代码中所做的更改显示在下面粘贴的代码中的**符号中。在achartengine演示源代码中的示例显示错误的结果

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}); 
} 
List<double[]> values = new ArrayList<double[]>(); 
**values.add(new double[] { 10, 15, 20, 25}); 
int[] colors = new int[] { Color.BLUE, Color.YELLOW }; 
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND, 
    PointStyle.TRIANGLE, PointStyle.SQUARE }; 
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(2); 
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.setXLabelsAlign(Align.RIGHT); 
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); 
XYMultipleSeriesDataset dataset = buildDataset(titles, x, values); 
values.clear(); 
**values.add(new double[] { 10, 15, 20, 25}); 
addXYSeries(dataset, new String[] { "Sunshine hours" }, x, values, 1); 
Intent intent = ChartFactory.getLineChartIntent(context, dataset, renderer, 
    "Average temperature"); 
return intent; 
} 

截屏图在此之后,我发现改变

enter image description here

+0

你是怎么做到的?当我尝试这个例子时,我总是得到一个错误...应用程序无法启动... – Shilaghae 2012-04-14 22:44:42

你只有一个x轴,即:

x.add(new double[] { 1, 2, 3, 4}); 

你不需要另一个?