MPAndroidChart: комбинированная диаграмма

Я использую библиотеку MPAndroidChart.

Я хотел использовать CombinedChart создать такую ​​диаграмму:

Это возможно? Я попробовал это, но это, кажется, не работает, потому что записи не работают, как я ожидал. Вы не можете сказать, что запись имеет значение 2 по оси X и значение 300 по оси Y. Также я не могу создать две разные оси Y, одну для баров и одну для линий.

Любопытно, что MPAndroidChart сначала добавляет все x-значения, а затем все y-значения, и у вас нет возможности контролировать, какое y-значение принадлежит какому-либо x-значению, потому что он просто вставляет y-значения в порядке их появления и связывает это со следующим значением x.

Есть ли способ, как я могу создать такую ​​диаграмму с MPAndroidChart. На самом деле я не хочу, чтобы меня заставляли использовать Google Charts из-за необходимого подключения к Интернету (но создание такого рода диаграмм отлично бы работало с Google Charts).

2 ответа

Решение
  • Вы можете иметь 2 разных оси
  • Вы можете контролировать, какое значение y принадлежит какому значению x (конечно!)
  • посмотрите пример комбинированного графика
  • это выглядит так:

введите описание изображения здесь

ОБНОВЛЕНИЕ: v3.0.0+

Пример для CombinedChart было расширено, теперь разрешено сгруппировать бары и сгруппированные бары вместе с другими типами диаграмм

Документация показывает, как настроить CombinedChart,

Вы можете создать собственный класс, расширяющий View, и в методе onDraw создать прямоугольники необходимой высоты, ширины и положения для стержней. Что касается линий, это очевидно, установите обводку, чтобы сделать ее более заметной.

Я использовал собственный вид для создания полос в моем приложении WhiteMarker и линий в Chron.

Поскольку принятый aswer имеет неработающие ссылки, вы должны использовать:

<com.github.mikephil.charting.charts.CombinedChart
        android:id="@+id/chart"/>

В вашем XML

а затем вот некоторый код:

        LineData linearData = new LineData(set1);
        // Set you LinearData

        BarData barData = new BarData(set2);
        // Set you LinearData

        CombinedData data=new CombinedData();
        data.setData(linearData);
        data.setData(barData);

РЕДАКТИРОВАТЬ: Оригинальный ответ был изменен, чтобы отразить то, что я только что написал. Ссылки были обновлены, и был добавлен некоторый код.

Другие вопросы по тегам