これは、MPAndroidChartライブラリを使用して作成した棒グラフです。今、私は各ラベルの色を変更する必要があり、インターネットで検索しても解決策を見つけることができません。誰かが私がこの問題を乗り越えるのを手伝ってくれませんか。
この答えには2つの部分があります。
1)棒グラフの凡例に単一のラベルを含める場合は、すべての棒を1つのデータセットに追加し、メソッドsetColors(int [] colors、Android.content.Context c)を使用して色を割り当てます。各バー。
2)各バーの凡例に異なるラベルを付けたい場合は、チャートに複数のデータセットを含め、各データセットに色を割り当てる必要があります(ラベルの数=データセットの数)。
参照できるように、以下にサンプルコードを含めました。コードの最初のブロックは最初のオプションを表しており、2番目のコードブロックは「replace」というタイトルのコメントの間に置き換えて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);
}
2番目のオプション:
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);
これがお役に立てば幸いです。他にご不明な点がございましたら、お気軽にお問い合わせください。
各DataSet
クラスのsetColors(...)
メソッドを使用して色を設定できます。 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)
:このデータセットに使用する色を設定します。
したがって、たとえば、グラフの6つのバーを緑、黄、赤、青、灰色、黒に設定するには、次のコードを使用します。
BarDataSet dataSet = ...
int[] colors = new int[] {Color.GREEN, Color.YELLOW, Color.GREEN, Color.BLUE, Color.GRAY, Color.BLACK};
dataSet.setColors(colors);
それに加えて、次の方法で値ラベルの色を制御できます。
dataSet.setValueTextColors(...);