Reputation: 7343
I am building an Android Application and I am using AChartEngine to display a graph and values I obtain.
However, there are times that the values I obtain contain negative values and the linechart would dip but I would not see my the point. I already tried doing:
mRenderer.setYAxisMin(-20);
where mRenderer is a XYMultipleSeriesRenderer
, however, my graphs minimum y value is still 0 and the user would have to pan to see the negative value.
Is there a way to set the graph in such a way that the minimum value is negative?
Here is my entire code for rendering the graph:
renderer3 = new XYSeriesRenderer();
renderer3.setLineWidth(2);
renderer3.setColor(Color.GREEN);
renderer3.setDisplayBoundingPoints(true);
renderer3.setPointStyle(PointStyle.CIRCLE);
renderer3.setPointStrokeWidth(3);
renderer3.setAnnotationsTextSize(20);
renderer3.setAnnotationsColor(Color.BLACK);
renderer3.setAnnotationsTextAlign(Paint.Align.RIGHT);
renderer3.setAnnotationsTextSize(25);
XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset();
dataSet.addSeries(accelerationSeries);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
mRenderer.addSeriesRenderer(renderer3);
mRenderer.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00)); // transparent margins
mRenderer.setPanEnabled(true, true);
mRenderer.setYAxisMax(10);
mRenderer.setYAxisMin(-10);
mRenderer.setYAxisMin(0);
mRenderer.setShowGrid(true); // we show the grid
mRenderer.setAxisTitleTextSize(40);
mRenderer.setShowAxes(true);
mRenderer.setShowCustomTextGrid(true);
mRenderer.setShowCustomTextGridY(true);
mRenderer.setYTitle("Acceleration (Meters/Second Squared)");
mRenderer.setXTitle("Time (Seconds)");
mRenderer.setMarginsColor(Color.argb(0, 255, 255, 255));
mRenderer.setAxesColor(Color.BLACK);
mRenderer.setLabelsColor(Color.BLACK);
mRenderer.setXLabelsColor(Color.BLACK);
mRenderer.setYLabelsColor(0, Color.BLACK);
mRenderer.setAxisTitleTextSize(20);
mRenderer.setLabelsTextSize(25);
mRenderer.setYLabelsAlign(Paint.Align.RIGHT);
mRenderer.setSelectableBuffer(25);
mRenderer.setMargins(new int[]{ 100, 100, 100, 100 });
mRenderer.setLegendTextSize(40);
mRenderer.setGridColor(Color.GRAY);
GraphicalView chartView = ChartFactory.getLineChartView(getBaseContext(), dataSet, mRenderer);
Upvotes: 1
Views: 760
Reputation: 38098
Here:
mRenderer.setYAxisMin(-10);
mRenderer.setYAxisMin(0);
The second call overrides the first one.
Therefore, you first set the minimum to -10.
Soon after, you re-set it to 0.
The solution is to remove
mRenderer.setYAxisMin(0);
Upvotes: 1