Это гистограмма, которую я создаю с использованием библиотеки MPAndroidChart. Теперь мне нужно изменить цвет каждой этикетки, и я не могу найти решение путем поиска через Интернет. Может ли кто-нибудь помочь мне решить эту проблему.MPAndroidChart гистограмма, как изменить цвет каждой метки
ответ
Вы можете установить цвета с помощью методов setColors(...)
каждого класса DataSet
. Смотрите следующие методы в BaseDataSet
javadocs:
setColors(int[] colors)
: Устанавливает цвета, которые должны быть использованы для этого набора данных.setColors(int[] colors, android.content.Context c)
: Устанавливает цвета, которые должны использоваться для этого набора данных.setColors(int[] colors, int alpha)
: Устанавливает цвета с определенным значением альфа.setColors(java.util.List<java.lang.Integer> colors)
: Устанавливает цвета, которые должны использоваться для этого набора данных.
Так, например, чтобы установить шесть баров графика, чтобы быть зеленый, желтый, красный, синий, серый и черный нужно использовать следующий код:
BarDataSet dataSet = ...
int[] colors = new int[] {Color.GREEN, Color.YELLOW, Color.GREEN, Color.BLUE, Color.GRAY, Color.BLACK};
dataSet.setColors(colors);
В Кроме того, вы можете контролировать цвет меток значений следующим образом:
dataSet.setValueTextColors(...);
Спасибо, что это сработало. – user2273146
На этот ответ две части.
1) Если вы хотите иметь специальную метку в своей легенде для вашего баррикада, вы бы добавили все ваши бары в один набор данных и использовали метод setColors (int [] colors, android.content.Context c) to назначьте цвет каждой панели.
2) Если вы хотите иметь разные метки в своей легенде для каждого бара, вам нужно будет включить в таблицу несколько наборов данных и назначить цвет каждому набору данных (количество меток = количество наборов данных).
Я привел пример кода ниже для ссылки. Исходный блок кода представляет собой первый вариант и второй блок кода, который вы можете заменить между комментариями под названием «заменить», чтобы получить второй вариант.
public class SO extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.androidchart_mp);
BarChart chart = (BarChart) findViewById(R.id.chart_bar_mp);
// replace
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry (1, 5));
entries.add(new BarEntry (3, 7));
entries.add(new BarEntry (5,3));
entries.add(new BarEntry (7,4));
entries.add(new BarEntry (9,1));
BarDataSet dataset = new BarDataSet(entries, "First");
dataset.setColors(new int[] {Color.RED, Color.GREEN, Color.GRAY, Color.BLACK, Color.BLUE});
BarData data = new BarData(dataset);
chart.setData(data);
// replace
// below is simply styling decisions on code that I have)
YAxis left = chart.getAxisLeft();
left.setAxisMaxValue(10);//dataset.getYMax()+2);
left.setAxisMinValue(0);
chart.getAxisRight().setEnabled(false);
XAxis bottomAxis = chart.getXAxis();
bottomAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
bottomAxis.setAxisMinValue(0);
bottomAxis.setLabelCount(10);
bottomAxis.setAxisMaxValue(10);
bottomAxis.setDrawGridLines(false);
chart.setDrawValueAboveBar(false);
chart.setDescription("");
// legend
Legend legend = chart.getLegend();
legend.setYOffset(40);
legend.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);
legend.setTextSize(200);
}
Второй вариант:
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry (1, 5));
ArrayList<BarEntry> entries2 = new ArrayList<>();
entries2.add(new BarEntry (3, 2));
ArrayList<BarEntry> entries3 = new ArrayList<>();
entries3.add(new BarEntry (5, 7));
ArrayList<BarEntry> entries4 = new ArrayList<>();
entries4.add(new BarEntry (7, 7));
ArrayList<BarEntry> entries5 = new ArrayList<>();
entries5.add(new BarEntry (9, 1));
List<IBarDataSet> bars = new ArrayList<IBarDataSet>();
BarDataSet dataset = new BarDataSet(entries, "First");
dataset.setColor(Color.RED);
bars.add(dataset);
BarDataSet dataset2 = new BarDataSet(entries2, "Second");
dataset2.setColor(Color.BLUE);
bars.add(dataset2);
BarDataSet dataset3 = new BarDataSet(entries3, "Third");
dataset3.setColor(Color.GREEN);
bars.add(dataset3);
BarDataSet dataset4 = new BarDataSet(entries4, "Fourth");
dataset4.setColor(Color.GRAY);
bars.add(dataset4);
BarDataSet dataset5 = new BarDataSet(entries5, "Fifth");
dataset5.setColor(Color.BLACK);
bars.add(dataset5);
BarData data = new BarData(bars);
chart.setData(data);
Я надеюсь, что это помогает, если у вас есть какие-либо другие вопросы, пожалуйста, дайте мне знать!
Спасибо, сработало. Я новичок в этой библиотеке, поэтому давайте узнаем, если что-нибудь, что я не смогу решить, исследуя его больше. – user2273146
Я добавлял значение в 0-й индекс для каждой записи. Ваш разный указатель на ваш ответ помог мне – Prabs
который вы используете? –
Я говорю о ярлыке цвета. На этом рисунке четыре цвета в четырех разных цветах. – user2273146
mChart.setHoleColor (Color.WHITE); попробуйте этот –