答案 0 :(得分:8)
这个答案有两个部分。
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<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);
我希望这有帮助,如果您有任何其他问题,请告诉我!
答案 1 :(得分:5)
您可以使用每个setColors(...)
类的DataSet
方法设置颜色。请参阅BaseDataSet
javadocs中的以下方法:
setColors(int[] colors)
:设置应该用于此DataSet的颜色。setColors(int[] colors, android.content.Context c)
:设置应该用于此DataSet的颜色。setColors(int[] colors, int alpha)
:设置具有特定Alpha值的颜色。setColors(java.util.List<java.lang.Integer> 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(...);
答案 2 :(得分:0)
barDataSet.setColors(ColorTemplate.COLORFUL_COLOR)
答案 3 :(得分:0)
对于上面的问题,我似乎有点晚了。但是我遇到了同样的问题,对于那些仍然需要它的人,您可以按照示例进行操作:
val colors = ArrayList<Int>()
colors.add(Color.rgb(20, 99, 165))
colors.add(Color.rgb(112, 188, 249))
colors.add(Color.rgb(112, 122, 122))
colors.add(Color.rgb(65, 65, 65))
这样做会覆盖默认颜色。
答案 4 :(得分:-1)
使用setColors()
或setColor()
-这两种方法设置图表的颜色。
您可以使用以下默认颜色:
ColorTemplate.COLORFUL_COLORS
关注this link,了解如何动态设置颜色。