首页 > 解决方案 > 将带有字符串的图标作为 XAxisValues 添加到 MPAndroid 图表

问题描述

github.PhilJay:MPAndroidChart:v2.0.9`

我想知道是否可以添加星形图标和数字,XAxisValues如下图所示? 在此处输入图像描述

我已经添加了数字并且工作正常,但我不知道如何添加星形图标!有没有办法结合文字和图标?
到目前为止,这是我的代码:

private ArrayList<BarDataSet> getDataSet(int stars1, int stars2, int stars3, int stars4, int stars5) {
    ArrayList<BarDataSet> dataSets = null;
    ArrayList<BarEntry> valueSet1 = new ArrayList<>();
    BarEntry v1e1 = new BarEntry(stars5, 4);
    valueSet1.add(v1e1);
    BarEntry v1e2 = new BarEntry(stars4, 3);
    valueSet1.add(v1e2);
    BarEntry v1e3 = new BarEntry(stars3, 2);
    valueSet1.add(v1e3);
    BarEntry v1e4 = new BarEntry(stars2, 1);
    valueSet1.add(v1e4);
    BarEntry v1e5 = new BarEntry(stars1, 0);
    valueSet1.add(v1e5);

    BarDataSet barDataSet1 = new BarDataSet(valueSet1, "");
    barDataSet1.setColors(new int[]{getResources().getColor(R.color.chart5), getResources().getColor(R.color.chart4),
            getResources().getColor(R.color.chart3), getResources().getColor(R.color.chart2), getResources().getColor(R.color.chart1)});
    barDataSet1.setValueTextSize(9);

    dataSets = new ArrayList<>();
    dataSets.add(barDataSet1);

    return dataSets;
}

private ArrayList<String> getXAxisValues() {
    ArrayList<String> xAxis = new ArrayList<>();
    xAxis.add("1");
    xAxis.add("2");
    xAxis.add("3");
    xAxis.add("4");
    xAxis.add("5");
    return xAxis;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
BarData data = new BarData(getXAxisValues(), getDataSet(stars1, stars2, stars3, stars4, stars5));
    barChart.setData(data);
    barChart.setDescription("");
    barChart.invalidate();
    barChart.getXAxis().setDrawGridLines(false);
    barChart.getXAxis().setDrawAxisLine(false);
    barChart.setDrawGridBackground(false);
    barChart.getAxisLeft().setDrawGridLines(false);
    barChart.getAxisRight().setDrawGridLines(false);
    barChart.getAxisLeft().setDrawAxisLine(false);
    barChart.getAxisRight().setDrawAxisLine(false);
    barChart.getLegend().setEnabled(false);
    barChart.getXAxis().setDrawLabels(true);
    barChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    barChart.getAxisRight().setDrawLabels(false);
    barChart.getAxisLeft().setDrawLabels(false);
}

感谢您的宝贵时间...♥</p>

标签: javaandroidmpandroidchart

解决方案


只需使用★字符,它就会很好地显示出来。您可以使用 x 轴值格式化程序来格式化值:

barChart.getXAxis().setValueFormatter(new IAxisValueFormatter() {
                                              @Override
                                              public String getFormattedValue(float value, AxisBase axis) {
                                                  return "value ★";
                                              }
                                          }

这是结果:

在此处输入图像描述


推荐阅读