2012-07-18 32 views
1

当我使用示例代码中的数据示例时,所有工作都正常。为什么我的achartengine图形最初显示为缩放?

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); 

我的意思是只有中央部分,如图形被放大。

What I see in my app

而不是what I want to see

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); 
+0

你见过这个http://www.achartengine.org/content/javadoc/org/achartengine/renderer/XYMultipleSeriesRenderer.html#setInitialRange%28double[]%29? – 2012-07-18 11:59:42

+0

@hotveryspicy是的,我试过了,但没有效果。来自示例的数据显示正确。我自己的数据 - 放大。 – Zubius 2012-07-18 12:12:15

回答

2

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

renderer.setXAxisMin(); 
renderer.setXAxisMax(); 
renderer.setYAxisMin(); 
renderer.setYAxisMax(); 
+0

'renderer.setAxisMinMax()'已经在扩展抽象类的setChartSettings()方法中实现。 – Zubius 2012-07-19 05:23:33

0

已解决。我的日期数据未排序。我排序后,图形显示正常。