Я хочу, чтобы моя диаграмма имела две оси Y с разными масштабами, как на изображении. Как я могу изменить масштаб для каждой оси?
MPandroidchart Double YAxis с разными масштабами
Ответы (3)
На выходных была выпущена бета-версия 2.0.0 с CombinedChart
, который позволяет отображать Line-, Bar-, Scatter- и CandleData на одном графике. Итак, функция наконец-то доступна.
Одно примечание о том, что я обнаружил во время моего обновления: вы не можете просто добавить DataSet() для каждого из них, вам нужно создать отдельные типы DataSet (Bar, Line, Scatter и т. д.), а затем использовать SetData() для соответствующего типа, для запуска рендеринга.
Вот пример кода .
Автор библиотеки MPAndroidChart четко указывает здесь (MPChart - Scatter Chart и LineChart на том же графике), что эта функция еще недоступна. Итак, я также ищу более приятный подход.
Таким образом, вы можете отображать два разных типа диаграмм как один, все еще используя эту библиотеку, только перекрывая их.
Я сделал это на своей стороне следующим образом:
1. Отредактируйте XML-макет активности, используя FrameLayout в качестве контейнера диаграмм.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
.......
<FrameLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/root_view">
</FrameLayout>
.......
</LinearLayout>
- Теперь в классе Activity создайте объекты диаграммы и прикрепите их к предыдущему контейнеру:
// construct the charts, as different objects
// make sure to have valid Data Sets
LineChartItem lineChart = new LineChartItem(lineChartDataset, getApplicationContext());
BarChartItem barChart = new BarChartItem(barChartDataset, getApplicationContext());
// get the charts' container
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.root_view);
// populate the container with the charts' views
frameLayout.addView(lineChart.getView(0, null, getApplicationContext()));
frameLayout.addView(barChart.getView(1, null, getApplicationContext()));
PROs/CONs for such a practice:
PROs
CONs
Я надеюсь на быстрый выпуск этой замечательной библиотеки с этой опцией. Заранее спасибо, Филипп Ягода!
В моем случае я бы сделал все, как было предложено mpandroidcharts
Тем не менее я получил одинаковую шкалу на «ось Y вправо» и «ось Y влево».
виновником был
combinedChart.axisLeft?.axisMinimum = //some calculations
combinedChart.axisLeft?.axisMaximum = //some calculations
combinedChart.axisRight?.axisMinimum = //some calculations
combinedChart.axisRight?.axisMaximum = //some calculations
В основном ошибка копирования и вставки, когда вы копируете свой идеальный код из гистограммы или линейной диаграммы, где при необходимости настраиваете минимум и максимум оси.