2013-10-24 3 views
1

У меня есть горизонтальный график, созданный AChartEngine. Однако у меня проблема.AChartEngine - Заблокировать ось при масштабировании

Когда приложение запускается впервые, то по оси Y Минимальное значение начинается с 0, так что все бары открыты, как показано на этой фотографии:

This is the start of the application

Однако, когда пользователь нажимает кнопку уменьшения масштаба , весь граф не отъезжает, и мои бары плавают, как видно на этой фотографии:

When zoomed out

Как видно, ось X движется, а начало координат (0,0) больше не в исходном положении ,

Так что мой вопрос: Можно ли заблокировать ось таким образом, чтобы при уменьшении масштаба полосы по-прежнему выравнивались по оси Y?

Вот мой код:

public class BarGraph { 

    public Intent getIntent(Context context) { 

     int y[] = { 25, 10, 15, 20 }; 

     CategorySeries series = new CategorySeries("Bar1"); 
     for (int i = 0; i < y.length; i++) { 
      series.add("Bar" + (i + 1), y[i]); 
     } 

     // collection of series under one object, there could any number of series 
     XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); 
     dataSet.addSeries(series.toXYSeries()); 

     // customization of the chart 

     XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for 
                  // one series 
     renderer.setColor(Color.RED); 
     renderer.setDisplayChartValues(true); 
     renderer.setChartValuesSpacing((float) 5.5d); 
     renderer.setLineWidth((float) 10.5d); 

     //collection of multiple vales for one renderer or series 
     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 

     mRenderer.addSeriesRenderer(renderer); 
     mRenderer.setChartTitle("Demo Graph"); 
     // mRenderer.setXTitle("xValues"); 
     mRenderer.setYTitle("Rupee"); 
     mRenderer.setZoomButtonsVisible(true); 
     mRenderer.setShowLegend(true); 
     mRenderer.setShowGridX(true); // this will show the grid in graph 
     mRenderer.setShowGridY(true); 
     // mRenderer.setAntialiasing(true); 
     mRenderer.setBarSpacing(.5); // adding spacing between the line or 
             // stacks 
     mRenderer.setApplyBackgroundColor(true); 
     mRenderer.setBackgroundColor(Color.BLACK); 
     mRenderer.setXAxisMin(0); 
     mRenderer.setYAxisMin(0); 
     mRenderer.setXAxisMax(5); 
     mRenderer.setYAxisMax(50); 
     // 
     mRenderer.setXLabels(0); 
     mRenderer.addXTextLabel(1, "Income"); 
     mRenderer.addXTextLabel(2, "Saving"); 
     mRenderer.addXTextLabel(3, "Expenditure"); 
     mRenderer.addXTextLabel(4, "NetIncome"); 


     mRenderer.setPanEnabled(true, false); // will fix the chart position 
     mRenderer.setOrientation(Orientation.VERTICAL); 

     Intent intent = ChartFactory.getBarChartIntent(context, dataSet, 
       mRenderer, Type.DEFAULT); 

     return intent; 
    } 
} 

Кроме того, как настроить размер шрифта и пространство, выделенное для меток оси?

Спасибо за помощь, ребята.

ответ

2

Вы можете изменять поведение трансфокации таким образом:

mRenderer.setZoomEnabled(true, false); 

Для размера этикетки, использование:

mRenderer.setLabelsTextSize(); 

Для заполнения используйте:

mRenderer.setXLabelsPadding(); 
+0

Он работал. Благодарю. У меня есть продолжение, как вы удаляете числа в X-Axis? Я только что заметил это сейчас, и цифры (0-5) находятся под ярлыками бара. – Razgriz

+1

mRenderer.setXLabels (0); –

Смежные вопросы