Razgriz
Razgriz

Reputation: 7343

Set Y Axis Minimum Value to be a negative value does not work

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

Answers (1)

Phantômaxx
Phantômaxx

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

Related Questions