2016-08-10 5 views
3

MPAndroidChart Это гистограмма, которую я создаю с использованием библиотеки MPAndroidChart. Теперь мне нужно изменить цвет каждой этикетки, и я не могу найти решение путем поиска через Интернет. Может ли кто-нибудь помочь мне решить эту проблему.MPAndroidChart гистограмма, как изменить цвет каждой метки

+0

который вы используете? –

+0

Я говорю о ярлыке цвета. На этом рисунке четыре цвета в четырех разных цветах. – user2273146

+0

mChart.setHoleColor (Color.WHITE); попробуйте этот –

ответ

5

Вы можете установить цвета с помощью методов setColors(...) каждого класса DataSet. Смотрите следующие методы в BaseDataSet javadocs:

Так, например, чтобы установить шесть баров графика, чтобы быть зеленый, желтый, красный, синий, серый и черный нужно использовать следующий код:

BarDataSet dataSet = ... 
int[] colors = new int[] {Color.GREEN, Color.YELLOW, Color.GREEN, Color.BLUE, Color.GRAY, Color.BLACK}; 
dataSet.setColors(colors); 

В Кроме того, вы можете контролировать цвет меток значений следующим образом:

dataSet.setValueTextColors(...); 
+0

Спасибо, что это сработало. – user2273146

5

На этот ответ две части.

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); 

Я надеюсь, что это помогает, если у вас есть какие-либо другие вопросы, пожалуйста, дайте мне знать!

+0

Спасибо, сработало. Я новичок в этой библиотеке, поэтому давайте узнаем, если что-нибудь, что я не смогу решить, исследуя его больше. – user2273146

+0

Я добавлял значение в 0-й индекс для каждой записи. Ваш разный указатель на ваш ответ помог мне – Prabs

 Смежные вопросы

  • Нет связанных вопросов^_^