【问题标题】:how to remove lines if values is 0 % in pie chart如果饼图中的值为 0 %,如何删除线条
【发布时间】:2017-07-21 06:18:20
【问题描述】:

我正在制作一个饼图,为此,我正在使用 MPAndroidChart 库,对于任何数据或多个数据,值可能包含 0%,并且我正在使用 @987654325 在饼图之外显示值@。 我不想在饼图中显示 0% 的值,我有一个解决方案来使用格式化的值。

public class CustomPercentFormatter implements IValueFormatter {    

    private DecimalFormat mFormat;

    public CustomPercentFormatter() {
        mFormat = new DecimalFormat("###,###,##0.0");
    }

    public CustomPercentFormatter(DecimalFormat format) {
        this.mFormat = format;
    }

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

        if (value == 0.0f)
            return "";

        return mFormat.format(value) + " %";
    }
}

但如果我使用线条选项,则线条显示为 0% 值并重叠显示多个 0% 值,所以谁能帮我删除 0% 值的线条选项

【问题讨论】:

  • 我也很坚持,github.com/PhilJay/MPAndroidChart/pull/1703/commits/… 这表示问题已关闭。但是,我找不到方法 pieChart.setDrawEmptyXLabel(false);使用 MPAndroidChart:v3.0.2'
  • 必须改变 PieChartRenderer.java 方法 drawValues() if (entry.getValue() != 0.0) { if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) { c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint); c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint); } }
  • 嗨,你能告诉我你是如何将文本放在图表之外的吗?

标签: android charts pie-chart mpandroidchart overlapping


【解决方案1】:

我更改了 PieChartRenderer 类中的方法 drawValues

如果值为 0,则不显示行。

只放一个条件:

if (entry.getValue() != 0.0) {
    if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
        c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
        c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
    }
}

而不是下面的代码:

if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
    c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
    c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}

【讨论】:

    【解决方案2】:

    如果您不想绘制这些线条,则必须将该线条的颜色设置为ColorTemplate.COLOR_NONE

    我没有足够的原始代码来指出具体要做什么,但在示例 https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java#L199 中,您可以查看如何操作。

    【讨论】:

    • 您不能通过为该行编写代码来直接更改颜色,它从该库中修复黑色。
    • 您可以使用 setValueLineColor(),但只能使用一次,如果您打算将其用作 ColorTemplate.COLOR_NONE,那么在哪里可以看到线条,并查看我提出的不想要的问题显示值为零的行。
    • 我明白你在说什么,但你的“解决方案”不好,你说你将更改一个库(或打开更改的合并请求),你将不再获得更新。
    • 但它做我想做的事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2015-08-02
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多