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
: –
- Gráficos de Android PIE en una actividad
- ¿Cómo crear continuamente la imagen de fondo de desplazamiento de desplazamiento en Open GL?
- AndroidPlot: elimina los valores de dominio de GraphWidget
- Multicolor barra de chat en android
- Android Line gráfico / gráfico API
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 :
SCREENSHOT Panned Screen :
También establezco los límites de pan para eso. ¿Cual es el problema? Gracias por adelantado..
- ¿Qué es el "Feature Graphic" para las aplicaciones de Android?
- Gráfico de barras multicolor con desplazamiento
- Haga clic en evento en el gráfico circular en android
- Usuarios únicos de Android google analytics
- Gráfico de barras usando la biblioteca AChartEngine
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);