【问题标题】:MPAndroidChart - Set xAxis value as StringMPAndroidChart - 将 xAxis 值设置为字符串
【发布时间】:2018-09-11 09:06:12
【问题描述】:

我想在我的 Android 应用中使用 MPandroidchart 比较成绩。

我在我的网站上制作了同样的图表。但不知道在Android中是否也可以。

这就是我想做的:

final ArrayList<String> labelsSub = new ArrayList<>();

labelsSub.add("CSE215");
labelsSub.add("CSE215");
labelsSub.add("MAT120");
labelsSub.add("MAT120");

List<BarEntry> entriesSub = new ArrayList<>();
entriesSub.add(new BarEntry(0f, "A"));
entriesSub.add(new BarEntry(1f, "A-"));
entriesSub.add(new BarEntry(2f, "A"));
entriesSub.add(new BarEntry(3f, "B"));

【问题讨论】:

标签: android charts mpandroidchart


【解决方案1】:

您可以使用以下代码轻松做到这一点:

XAxis xAxis = lineChart.getXAxis();
xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            switch ((int)value){
                //write your logic here
                case 0:
                    return "CHE1";
                case 1:
                    return "CHE2";
                case 2:
                    return "CHE3";
                case 3:
                    return "CHE4;
                default:
                    return "CHE5";
            }
        }
    });

【讨论】:

  • 我要设置A、A-、B...的成绩
  • @Tahmid 我只是放了示例字符串。你可以用任何你想要的替换它们。
【解决方案2】:

这是我找到的解决方案,希望对其他人有所帮助。

如果您想在图表值中设置自定义文本,请使用它。

public class GradeValueChart implements IValueFormatter {

    private DecimalFormat mFormat;

    public GradeValueChart() {
        mFormat = new DecimalFormat("###,###,##0.0"); // use one decimal
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {


        String val = Utils.getGpaGrade(value);


        return val + " "; // e.g. append any text
    }
}

然后在Dataset中设置formatter。

    setSub.setValueFormatter(new GradeValueChart());

【讨论】:

    【解决方案3】:

    使用字符串数组来格式化 x 轴上的 xvalue。

    ArrayList<String> chnlList=new ArrayList<>();
    xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return chnlList.get((int) value);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2022-01-06
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多