【问题标题】:MP android chart displaying float values at X-Axis of Horizontal bar Chart?MP android图表在水平条形图的X轴上显示浮点值?
【发布时间】:2015-12-25 15:09:19
【问题描述】:

我正在使用 MP 图表来显示评论,除了 X 轴值显示为浮动值(用于特定类型评论的数量)之外,一切正常。

这是我正在使用的代码:

     BarData data = new BarData(getXAxisValues(), getDataSet(properties));
            chart.setData(data);
            chart.getXAxis().setEnabled(false); // hides horizontal grid lines inside chart
            YAxis leftAxis = chart.getAxisLeft();
            chart.getAxisRight().setEnabled(false); // hides horizontal grid lines with below line
            leftAxis.setEnabled(false); // hides vertical grid lines  inside chart
            /*chart.animateXY(2000, 2000);*/ // for animating reviews display
            chart.invalidate();
            chart.setClickable(false);
            chart.setDescription("");    // Hide the description
            chart.getLegend().setEnabled(false);
            chart.setDoubleTapToZoomEnabled(false);
            chart.setPinchZoom(false);

            leftAxis.setDrawLabels(true);
private ArrayList<BarDataSet> getDataSet(Properties properties) {
        ArrayList<BarDataSet> dataSets = null;

        ArrayList<BarEntry> valueSet1 = new ArrayList<>();

        BarEntry v1e1 = new BarEntry(properties.getRating10().intValue(), 0);
        valueSet1.add(v1e1);
        BarEntry v1e2 = new BarEntry(properties.getRating20().intValue(), 1);
        valueSet1.add(v1e2);
        BarEntry v1e3 = new BarEntry(properties.getRating30().intValue(), 2);
        valueSet1.add(v1e3);
        BarEntry v1e4 = new BarEntry(properties.getRating40().intValue(), 3);
        valueSet1.add(v1e4);
        BarEntry v1e5 = new BarEntry(properties.getRating50().intValue(), 4);
        valueSet1.add(v1e5);

        BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Asset");
        barDataSet1.setColors(ColorTemplate.COLORFUL_COLORS);

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

    private ArrayList<String> getXAxisValues() {
        ArrayList<String> xAxis = new ArrayList<>();
        xAxis.add("12.0");
        xAxis.add("4.0");
        xAxis.add("4");
        xAxis.add("4");
        xAxis.add("4");
        return xAxis;
    }

这里我将数据设置为水平条形图。

我希望红色圈出的值是整数而不是浮点数。 谁能帮帮我?

【问题讨论】:

    标签: android bar-chart mpandroidchart


    【解决方案1】:

    你可以在 kotlin 中使用它

    barData.setValueFormatter(object :ValueFormatter() {
                override fun getFormattedValue(value: Float): String {
                    return "${ value.toInt() }"
                }
            })
    

    如果您使用的是 Java,请使用它

     barData.setValueFormatter(new ValueFormatter() {
                @Override
                public String  getFormattedValue(float value) {
                    return String.valueOf((int) value);
                }
            });
    

    【讨论】:

      【解决方案2】:

      我已经解决了(再次感谢 Philipp),这就是解决方案

      创建您自己的实现给定 ValueFormatter 的值格式化程序类

      这是我的课:

      public class MyValueFormatter implements ValueFormatter{
          @Override
          public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
              return Math.round(value)+""; 
          }
      }
      

      然后将值 Formatter 设置为您的 BarData:

      BarData data = new BarData(getXAxisValues(), getDataSet(properties));
      data.setValueFormatter(new MyValueFormatter());
      

      就是这样,这是输出-

      【讨论】:

      • 我试过这个选项。但我得到的值仍然不是 int 值。我有整数值的条目。如果我完成了 4 个任务,即输入为 (4,1),则栏上显示的值为 10。Y 是这样吗?@Manikanta
      • 除非我看到您的值格式化程序以及您为其设置值的方式,否则我可以对此发表评论。
      • 你能帮我解决这个问题吗? stackoverflow.com/questions/36735219/…@Manikanta
      • 不错的想法 +1 :)
      【解决方案3】:

      ValueFormatter 界面让您可以在图表中显示您想要的任何内容。更多小数,更少小数,字符串,...

      【讨论】:

      • 非常感谢@philipp Jahoda 我明白了。
      • 你能帮我了解如何在每个栏内写文字吗?像,里面的绿条 5 星,橙条 2 星这样吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多