【问题标题】:How to get Y axis label in android mpchart?如何在android mpchart中获取Y轴标签?
【发布时间】:2016-09-14 13:07:23
【问题描述】:

我已经绘制了带有相应 X 和 Y 轴的图表。

现在如何获取 Y 轴标签并在 Y 轴上比较和放置另一个标签。

例如:

我得到的 Y 轴标签是 1,2,3,4,5 等等。现在如何将相应的标签分配为,

如果是 2,那么低。 如果是10,那么高。 如果是15,那么非常高。 然后是至高无上的。

所以我的问题是如何获取 Y 轴标签然后更改和分配它? y轴可以用字符串吗?

例如:

我需要在 Y 轴上显示为低,而不是左右 y 轴上的 2。以及如何删除显示图中的数字?即 2.00

这是一段代码。

  List<BarEntry> entries = new ArrayList<>();
    ArrayList<String> labels = new ArrayList<String>();
    mDetectiveGraphExecutor = new DetectiveGraphExecutor(this);
    barChart = (BarChart) findViewById(R.id.chart);
    YAxis leftAxis = barChart.getAxisRight();
    leftAxis.removeAllLimitLines();
    barChart.setDescription("");
    leftAxis.setEnabled(false);
    ViewPortHandler handlers = barChart.getViewPortHandler();
    handlers.setMaximumScaleX(10);
entries.add(new BarEntry(activities.size(), ++columnIndex)); //list of datas displaying.. 
        labels.add("Time");
        BarDataSet dataset = new BarDataSet(entries, "# Counts");
        BarData data = new BarData(labels, dataset);
        barChart.setData(data);

【问题讨论】:

  • 是要将Y轴标签从数字更改为字符串还是要在y轴上合并数字和字符串?
  • 我想将该数字更改为字符串。我问的原因是例如:如果它的 y 轴指向 5,我需要在左右 y 轴标签中显示为低。那么如何在 y 轴上显示“低”。

标签: android charts bar-chart mpandroidchart


【解决方案1】:

尝试覆盖 Y 轴渲染器。 这是一个例子:

setRendererRightYAxis(new YAxisRenderer(mViewPortHandler, mAxisRight, mRightAxisTransformer)
    {
        @Override
        protected void drawYLabels(Canvas c, float fixedPosition, float[] positions, float offset)
        {
            ArrayList<String> yLabels = new ArrayList<>();
            yLabels.add("10 " + getResources().getString(R.string.low));
            yLabels.add("20 " + getResources().getString(R.string.medium));
            yLabels.add("30 " + getResources().getString(R.string.high));

            for (int i = 0; i < _yLabels.size(); i++)
            {
                c.drawText(yLabels.get(i), fixedPosition, positions[i * 2 + 1] + offset, mAxisLabelPaint);
            }
        }
    });

另一种选择只是覆盖值格式化程序,因此对于您的示例-

getAxisRight().setValueFormatter(new YAxisValueFormatter()
    {
        @Override
        public String getFormattedValue(float value, YAxis yAxis)
        {
            if(value == 0)
            {
                return getResources().getString(R.string.low));
            }
            else if(value == 1)
            {
                return getResources().getString(R.string.medium));
            }
            else
            {
                return getResources().getString(R.string.high));
            }
        }
    });

【讨论】:

    【解决方案2】:

    如果您需要更改 y 轴的值,请使用此代码

    YAxis yAxis = water_graph.getAxisLeft();//for left side value changes
    
    YAxis yAxis = water_graph.getAxisRight(); //for right side value changes
    
         yAxis.setGranularityEnabled(true);
         yAxis.setValueFormatter(new IAxisValueFormatter() {
                @Override
                public String getFormattedValue(float value, AxisBase axis) {
                    String str="";
                    if(value<5)
                        str="Low";
                    else if(value<10)
                        str="Medium";
                    else if(value==10)
                        str="high";
                    else
                        str="very high";
                    return str;
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多