MPAndroidChart条形图如何更改每个标签的颜色

MPAndroidChart 这是我使用MPAndroidChart库构建的条形图。 现在我必须改变每个标签的颜色,我无法通过互联网搜索find解决方案。 任何人都可以帮我解决这个问题。

这个答案分为两部分。

1)如果你想在条形图的图例中有一个单一的标签,你可以将所有的条形图添加到一个数据集中,并使用方法setColors(int [] colors,android.content.Context c)来指定颜色到每个酒吧。

2)如果要在图例中为每个条形图标添加不同的标签,则需要在图表中包含多个数据集,并为每个数据集指定颜色(标签数量=数据集数量)。

我在下面列出了示例代码供您参考。 初始代码块代表第一个选项,第二个代码块可以在标题为“replace”的注释之间替换以获得第二个选项。

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 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 entries = new ArrayList<>(); entries.add(new BarEntry (1, 5)); ArrayList entries2 = new ArrayList<>(); entries2.add(new BarEntry (3, 2)); ArrayList entries3 = new ArrayList<>(); entries3.add(new BarEntry (5, 7)); ArrayList entries4 = new ArrayList<>(); entries4.add(new BarEntry (7, 7)); ArrayList entries5 = new ArrayList<>(); entries5.add(new BarEntry (9, 1)); List bars = new ArrayList(); 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); 

我希望这有帮助,如果您有任何其他问题,请告诉我!

您可以使用每个DataSet类的setColors(...)方法设置颜色。 请参阅BaseDataSet javadocs中的以下方法:

  • setColors(int[] colors) :设置应该用于此DataSet的颜色。
  • setColors(int[] colors, android.content.Context c) :设置应该用于此DataSet的颜色。
  • setColors(int[] colors, int alpha) :设置具有特定alpha值的颜色。
  • setColors(java.util.List colors) :设置应该用于此DataSet的颜色。

因此,例如,要将图表的六个条形设置为绿色,黄色,红色,蓝色,灰色和黑色,您可以使用以下代码:

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

除此之外,您还可以使用以下方法控制值标签的颜色:

 dataSet.setValueTextColors(...);