¿Cómo hacer que un CombinedChart tenga dos escalas diferentes en MPAndroidChart?

Tengo un CombinedChart y me gustaría que LineChart tomará el eje izquierdo como referencia y BarChart tomará el eje derecho como referencia, pero no pude sacarlo.

Estoy intentando el código siguiente:

 barDataSet.setAxisDependency(YAxis.AxisDependency.RIGHT); lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT); 

Pero ahora ambos gráficos ( LineChart y BarChart ) están a la izquierda (mezclándolos y el eje derecho ha desaparecido).

Los ejes izquierdo y derecho tienen granularidad diferente.

¿Cómo puedo hacer correctamente que cada gráfico tome como referencia un eje Y diferente (izquierda o derecha, respectivamente)?

¡Gracias por adelantado!

Esto es ciertamente posible en MPAndroidChart versión 3.0.2 .

Como se puede observar en la captura de pantalla de abajo, el LineDataSet tiene AxisDependency.LEFT (escalado de 0 a 21) mientras que el BarDataSet tiene AxisDependency.RIGHT (escalado de 0 a 50) y, según sea necesario, tienen granularidad diferente:

Un gráfico con el LineDataSet dependiente de la izquierda y el BarDataSet dependiendo del eje derecho

Aquí hay una prueba de concepto para generar el gráfico anterior que es una simple adaptación del proyecto de ejemplo en GitHub :

 import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.WindowManager; import com.github.mikephil.charting.charts.CombinedChart; import com.github.mikephil.charting.charts.CombinedChart.DrawOrder; import com.github.mikephil.charting.components.AxisBase; import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.XAxis.XAxisPosition; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.BarData; import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.CombinedData; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; import com.github.mikephil.charting.formatter.IAxisValueFormatter; import java.util.ArrayList; public class CombinedChartActivity extends FragmentActivity { private String[] mMonths = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec" }; private CombinedChart mChart; private final int itemcount = 12; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_combined); mChart = (CombinedChart) findViewById(R.id.chart1); mChart.getDescription().setEnabled(false); mChart.setBackgroundColor(Color.WHITE); mChart.setDrawGridBackground(false); mChart.setDrawBarShadow(false); mChart.setHighlightFullBarEnabled(false); mChart.setDrawOrder(new DrawOrder[]{ DrawOrder.BAR, DrawOrder.BUBBLE, DrawOrder.CANDLE, DrawOrder.LINE, DrawOrder.SCATTER }); Legend l = mChart.getLegend(); l.setWordWrapEnabled(true); l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); l.setOrientation(Legend.LegendOrientation.HORIZONTAL); l.setDrawInside(false); YAxis rightAxis = mChart.getAxisRight(); rightAxis.setDrawGridLines(false); rightAxis.setGranularity(10f); rightAxis.setAxisMinimum(0f); YAxis leftAxis = mChart.getAxisLeft(); leftAxis.setDrawGridLines(false); rightAxis.setGranularity(1f); leftAxis.setAxisMinimum(0f); XAxis xAxis = mChart.getXAxis(); xAxis.setPosition(XAxisPosition.BOTH_SIDED); xAxis.setAxisMinimum(0f); xAxis.setGranularity(1f); xAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return mMonths[(int) value % mMonths.length]; } }); CombinedData data = new CombinedData(); data.setData(generateLineData()); data.setData(generateBarData()); xAxis.setAxisMaximum(data.getXMax() + 0.25f); mChart.setData(data); mChart.invalidate(); } private LineData generateLineData() { LineData d = new LineData(); ArrayList<Entry> entries = new ArrayList<Entry>(); for (int index = 0; index < itemcount; index++) entries.add(new Entry(index + 0.5f, getRandom(15, 5))); LineDataSet set = new LineDataSet(entries, "Line DataSet"); set.setColor(Color.rgb(0,100,0)); set.setLineWidth(2.5f); set.setCircleColor(Color.rgb(0,100,0)); set.setCircleRadius(5f); set.setFillColor(Color.rgb(0,100,0)); set.setMode(LineDataSet.Mode.CUBIC_BEZIER); set.setDrawValues(true); set.setValueTextSize(10f); set.setValueTextColor(Color.rgb(0,100,0)); set.setAxisDependency(YAxis.AxisDependency.LEFT); d.addDataSet(set); return d; } private BarData generateBarData() { ArrayList<BarEntry> entries = new ArrayList<BarEntry>(); for (int index = 0; index < itemcount; index++) { entries.add(new BarEntry(index, getRandom(25, 25))); } BarDataSet set = new BarDataSet(entries, "Bar DataSet"); set.setColor(Color.rgb(60, 220, 78)); set.setValueTextColor(Color.rgb(60, 220, 78)); set.setValueTextSize(10f); set.setAxisDependency(YAxis.AxisDependency.RIGHT); return new BarData(set); } private float getRandom(float range, float startsfrom) { return (float) (Math.random() * range) + startsfrom; } } 
  • ¿Hay una manera de ocultar etiquetas de valor para cada barra en el gráfico de barras en MPAndroidChart?
  • Cómo ocultar valores dibujados en MPAndroidChart?
  • En MPAndroidChart, ¿cómo agregar el evento de clic para cada barra en Barchart?
  • Cómo saltar valores en índices particulares en el gráfico de líneas utilizando MPAndroid Chart Library?
  • MPAndroidChart - Eliminar borde superior / eje desde v2
  • ¿Rellenar la escala Y específica con diverso color en carta de la línea usando la biblioteca de la carta del androide de MP?
  • Cómo configurar los colores en MPAndroidChart?
  • MPAndroidChart - ¿Cómo mostrar los valores y cuando su valor es cero?
  • Scrollable BarChart con la posibilidad de tocar cada barra usando MpAndroidChart?
  • No se pudo resolver: com.github.PhilJay: MPAndroidChart: v2.1.4
  • MPAndroidChart PieChart no se muestra cuando se utiliza en ScrollView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.