2012-08-24 4 views
5

Trudno jest uzyskać wiele osi Y, aby pokazać się na wykresie za pomocą achartengine na Androidzie. Próbowałem skopiować to, co zostało zrobione na wersji demonstracyjnej "Multiple Temperature Chart" tutaj: http://code.google.com/p/achartengine/source/browse/trunk/achartengine/demo/org/achartengine/chartdemo/demo/chart/MultipleTemperatureChart.java, ale nie pokaże ona osi Y po prawej stronie, ani nie wyświetli etykiet Yaxis, które chcę pokazać.Achartengine na Androida - wiele osi Y

Jakieś pomysły co mój kod może robić źle:

mCurrentCostSeries = new XYSeries(costTitle); 
    mCurrentEffSeries = new XYSeries(effTitle); 

    mDataset.addSeries(mCurrentCostSeries); 
    mDataset.addSeries(mCurrentEffSeries); 



    int[] colors = new int[] { Color.RED, Color.YELLOW }; 
    PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.DIAMOND }; 
    mRenderer = new XYMultipleSeriesRenderer(2); 
    setRenderer(mRenderer, colors, styles); 
    int length = mRenderer.getSeriesRendererCount(); 
    for (int i = 0; i < length; i++) { 
     XYSeriesRenderer r = (XYSeriesRenderer) mRenderer.getSeriesRendererAt(i); 
     r.setLineWidth(3f); 
    } 

    mRenderer.setApplyBackgroundColor(true); 
    mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50)); 

    mRenderer.setAxesColor(Color.LTGRAY); 
    mRenderer.setZoomButtonsVisible(true); 
    mRenderer.setPointSize(10); 

    mRenderer.setChartTitle("Fuel Efficiency and Cost"); 


    mRenderer.setShowGrid(true); 
    mRenderer.setXLabelsAlign(Align.RIGHT); 
    mRenderer.setYLabelsAlign(Align.RIGHT); 


    mRenderer.setYTitle(cunits,0); 

    mRenderer.setLabelsColor(Color.WHITE); 
    mRenderer.setXLabelsColor(Color.GREEN); 
    mRenderer.setYLabelsColor(0, colors[0]); 
    mRenderer.setYLabelsColor(1, colors[1]); 



    mRenderer.setYTitle(dunits, 1);  // these lines SHOULD set the second Y axis 
    mRenderer.setYAxisAlign(Align.RIGHT, 1);// (series=1) but have no effect. 
    mRenderer.setYLabelsAlign(Align.LEFT, 1); 

Używam wykres timeseries zamiast wykresu cubicline zastosowań demo, ale poza tym wszystko powinno być prawie takie same.

Odpowiedz

5

Należy przydzielić oddzielny numer skali dla drugiej serii. Na przykład zainicjuj w ten sposób mCurrentEffSeries i zadziała:

mCurrentEffSeries = new XYSeries(effTitle, 1); 
+1

Awesome! To było to. Dzięki, Dan. Lubię achartengine, a dema są fajne, ale brakuje w nich dokumentacji. Dobrze, że StackOverflow jest tutaj – Martin