【发布时间】:2012-03-30 13:42:42
【问题描述】:
我正在为 android 开发图表工具。在搜索时,我得到了achartengine 工具并下载了演示源代码。在此来源中,是MultipleTemperatureChart.java 的示例。在此示例中,绘制带有两个 y 轴和一个 x 轴的图形。
我注意到的奇怪的事情是,当我只是在代码中自己传递一个值而不是示例代码中给出的值时。我注意到的是针对left y-axis 和x-axis 的图表很好。但是使用right y-axis 和x-axis 的图表是错误的。为什么会发生这种情况?代码有什么问题吗?我在代码中所做的更改显示在** 中,签入我在下面粘贴的代码。
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;
}
更改后我找到的图表的屏幕截图
【问题讨论】:
-
你是怎么做到的?当我尝试这个例子时,我总是得到一个错误......应用程序没有启动......
标签: android achartengine