Barra que se solapa con el eje Y cuando se filtra en el aChartEngine

Estoy trabajando en la aplicación que muestran el gráfico de barras en ella. El gráfico de barras se dibuja según los valores dinámicos que se reciben a ellos, los datos del gráfico de barras está en MB / KB.

Code Snippet : –

 private void graphinit(ArrayList<Integer> graphInDataList, ArrayList<Integer> graphOutDataList) { mRenderer.setXAxisMin(0); mRenderer.setXAxisMax(graphXMaxLimit); mRenderer.setYAxisMin(0); // mRenderer.setYAxisMax(100); int max = getMaximumNumber(graphInDataList, graphOutDataList); mRenderer.setYAxisMax(max); double[] limits = new double[] {0, graphXMaxLimit, 0, max}; mRenderer.setPanLimits(limits); mRenderer.setBarSpacing(0.3f); mRenderer.setDisplayChartValues(false); mRenderer.setShowAxes(true); mRenderer.setShowLegend(false); mRenderer.setShowLabels(true); mRenderer.setPanEnabled(true, false); mRenderer.setClickEnabled(false); mRenderer.setZoomEnabled(true, false); mRenderer.setZoomButtonsVisible(false); mRenderer.setShowGrid(false); mRenderer.setYLabelsPadding(3); mRenderer.setXTitle("Analysis Duration in mins"); mRenderer.setYTitle("Data in KB"); // mRenderer.setXAxisMin(-0.5); mRenderer.setYLabelsAlign(Align.RIGHT); // set up the margin to the graph mRenderer.setMargins(new int[] { 5, 40, 0, 5}); // mRenderer.setXAxisMin(1); mRenderer.setXAxisMin(-0.5); // mRenderer.setXAxisMax(60); inDataSeries = new XYSeries("InData"); for (int i = 0; i < graphInDataList.size(); i++) { inDataSeries.add(i, graphInDataList.get(i)); } outDataSeries = new XYSeries("OutData"); for (int i = 0; i < graphOutDataList.size(); i++) { outDataSeries.add(i, graphOutDataList.get(i)); } mDataset.addSeries(inDataSeries); mDataset.addSeries(outDataSeries); if(graphInDataList.size()>0){ right_left=(int) (graphInDataList.size()/60); } XYSeriesRenderer in_data_renderer = new XYSeriesRenderer(); in_data_renderer.setColor(Color.GREEN); XYSeriesRenderer out_data_renderer = new XYSeriesRenderer(); out_data_renderer.setColor(Color.RED); mRenderer.addSeriesRenderer(in_data_renderer); mRenderer.addSeriesRenderer(out_data_renderer); mRenderer.setApplyBackgroundColor(true); mRenderer.setBackgroundColor(Color.TRANSPARENT); mRenderer.setMarginsColor(getResources().getColor(R.color.transparent_background)); } 

EDIT :

Creado en onResume ()

  if (mChartView == null) { LinearLayout layout = (LinearLayout) findViewById(R.id.linear_chart); mChartView = ChartFactory.getBarChartView(this, mDataset, mRenderer, Type.STACKED); Logger.vLog("HistoryDetailScreen", "mChartView : "+mChartView); layout.addView(mChartView); @SuppressWarnings("unused") boolean enabled = mDataset.getSeriesCount() > 0; } else { mChartView.repaint(); } 

Utilicé el método graphinit (arrlist1, arrlist2) en el onCreate ().

PROBLEM :

Cuando hacemos panorámica en el gráfico de barras, la barra se superpone al eje Y.

SCREENSHOT Default Screen :

Introduzca aquí la descripción de la imagen

SCREENSHOT Panned Screen :

Introduzca aquí la descripción de la imagen

También establezco los límites de pan para eso. ¿Cual es el problema? Gracias por adelantado..

Esto es trabajo para mí …

 mRenderer.setXAxisMin(-0.5); //for first bar overlaps y-axis 

Está estableciendo los límites de panorámica correctamente, pero tenga en cuenta que las barras en sí no tienen un ancho de cero unidades. Teniendo esto en cuenta, tendrías que establecer el valor mínimo del eje X en algo por debajo del límite de paneles X mínimo, por ejemplo -0.5 .

Incluso puede cambiar el valor límite de panorámica en tiempo de ejecución, escuchando eventos de zoom y cambiando los límites en consecuencia.

 mRenderer.setPanLimits(new double[] {-0.5, graphXMaxLimit, 0, max}); mChartView.addZoomListener(new ZoomListener() { public void zoomApplied(ZoomEvent e) { double currentMinX = mRenderer.getXAxisMin(); double currentMaxX = mRenderer.getXAxisMax(); double coef = (graphXMaxLimit + 0.5) / (currentMaxX - currentMinX); mRenderer.setPanLimits(new double[] {-0.5 / coef, graphXMaxLimit, 0, max}); } public void zoomReset() { Log.i("Zoom", "Reset"); } }, true, true); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.