1

当我使用示例代码中的数据样本时,一切正常。

Date[] dateValues = new Date[] { new Date(95, 0, 1), new Date(95, 3, 1), new Date(95, 6, 1),
                new Date(95, 9, 1), new Date(96, 0, 1), new Date(96, 3, 1), new Date(96, 6, 1),
                new Date(96, 9, 1), new Date(97, 0, 1), new Date(97, 3, 1), new Date(97, 6, 1),
                new Date(97, 9, 1), new Date(98, 0, 1), new Date(98, 3, 1), new Date(98, 6, 1),
                new Date(98, 9, 1), new Date(99, 0, 1), new Date(99, 3, 1), new Date(99, 6, 1),
                new Date(99, 9, 1), new Date(100, 0, 1), new Date(100, 3, 1), new Date(100, 6, 1),
                new Date(100, 9, 1), new Date(100, 11, 1) };
        dates.add(dateValues);
        double[] valueValues = { 4.9, 5.3, 3.2, 4.5, 6.5, 4.7, 5.8, 4.3, 4, 2.3, -0.5, -2.9, 3.2, 5.5,
                4.6, 9.4, 4.3, 1.2, 0, 0.4, 4.5, 3.4, 4.5, 4.3, 4 };
        values.add(valueValues);

但是,当我尝试使用自己的数据时,会特别绘制图表。

Set<Date> st = data.keySet();
Iterator<Date> it = st.iterator();
Date[] dateValues = new Date[data.size()]; 
double[] valueValues = new double[data.size()];
for (short i = 0; i < data.size(); i++) {
    Date temp = it.next();
    dateValues[i] = temp;
    valueValues[i] = data.get(temp);
}

dates.add(dateValues);
values.add(valueValues);

我的意思是只有中心部分,比如放大图。

我在我的应用中看到的

而不是我想看到的

double ymin = getYMin(valueValues) - (getYMax(valueValues) - getYMin(valueValues)) * 0.1;
        double ymax = getYMax(valueValues) + (getYMax(valueValues) - getYMin(valueValues)) * 0.1;
        int[] colors = new int[] { Color.GREEN };
        PointStyle[] styles = new PointStyle[] { PointStyle.POINT };
        XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
        setChartSettings(renderer, name, xtitle, ytitle, dateValues[0].getTime(),
            dateValues[dateValues.length - 1].getTime(), ymin, ymax, Color.GRAY, Color.LTGRAY);
        renderer.setShowGrid(true);
        renderer.setYLabels(5);
        renderer.setZoomButtonsVisible(true);
        renderer.setZoomEnabled(true, false);
        renderer.setPanEnabled(false, false);
4

2 回答 2

2

默认情况下,AChartEngine 计算要显示的数据的最佳范围。这意味着它会尝试在屏幕上显示您的所有数据。但是,您可以使用以下方法进行调整:

renderer.setXAxisMin();
renderer.setXAxisMax();
renderer.setYAxisMin();
renderer.setYAxisMax();
于 2012-07-18T19:04:01.667 回答
0

解决了。我的日期数据未排序。在我对其进行排序后,图表显示正常。

于 2012-07-19T08:37:45.223 回答