Reputation: 91
i made bar-chart in android.The positive value in the Bar-Chart has been corrected and there is too negative value.Draw the positive values in the chart are correct but negative values are not draw or not fill the color .i don't know how to draw the bar-chart with negative value.anyone help me.
String[] titles = new String[] { "USER INPUTS" };
List<double[]> x = new ArrayList<double[]>();
x.add(new double[] { 1, 2, 3, 4, 5 });
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { 2, -3, 4, 3, -7 });
dataset = new XYMultipleSeriesDataset();
renderer = new XYMultipleSeriesRenderer();
renderer.setChartTitle("USER INPUTS");
renderer.setXTitle("X");
renderer.setYTitle("Y");
renderer.setXLabelsAlign(Align.RIGHT);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setXAxisMin(0);
renderer.setXAxisMax(10);
renderer.setYAxisMin(-40);
renderer.setYAxisMax(40);
renderer.setClickEnabled(false);
renderer.setExternalZoomEnabled(false);
renderer.setZoomButtonsVisible(true);
renderer.setPanLimits(new double[] { 0, 5, 0, 100 });
renderer.setZoomLimits(new double[] { 10, 20, 10, 40 });
renderer.setShowGrid(true);
renderer.setPanEnabled(false, false);
renderer.setZoomEnabled(false, false);
renderer.setBarSpacing(1.5);
renderer.setLabelsColor(Color.BLUE);
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] { 20, 30, 15, 20 });
renderer.setBackgroundColor(Color.GREEN);
renderer.setMarginsColor(getResources().getColor(R.color.transparent));
rendererSeries = new XYSeriesRenderer();
rendererSeries.setColor(Color.GREEN);
rendererSeries.setDisplayChartValues(true);
renderer.addSeriesRenderer(rendererSeries);
if (mChartView == null) {
Log.d("Oncreate ", "if (mChartView == null)");
mChartView = ChartFactory.getBarChartView(context,
mDataset(titles, x, values), renderer, Type.DEFAULT);
layoutBarGraph.addView(mChartView, new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
// mChartView.repaint();
Log.d("Oncreate ", "if (mChartView != null)");
}
Upvotes: 1
Views: 2698
Reputation: 1701
Maybe it's late but I hope it helps.
You have to set your YAxis property startAtZero to false.
See the code below:
//For me, AxisDependency.LEFT because I was using an horizontar-bar
YAxis yAxis = mChart.getAxis(YAxis.AxisDependency.LEFT);
yAxis.setStartAtZero(false);
Upvotes: 3