【问题标题】:How to hide zero values in pie chart - MPChart android如何在饼图中隐藏零值 - MPChart android
【发布时间】:2016-01-01 15:51:43
【问题描述】:

有没有办法抑制 MP android 图表(饼图)中的零值文本

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    如果 value==0.0f,则使用自定义格式化程序并返回空字符串

    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) + " %";
        }
    }
    

    设置格式化程序:

    lineData.setValueFormatter(new CustomPercentFormatter());
    

    【讨论】:

      【解决方案2】:

      怎么样?

      if(value > 0) dataSet.add(...)
      else {
         // do nothing
      }
      

      或者写你自己的ValueFormatter来抑制零。

      【讨论】:

      • 我也这样做了。 MP图中还有其他选项吗
      【解决方案3】:

      您可以为MPChart 实现一个新的格式化程序,正如 Ali Zarei 在他的回答中声明的那样。但是您可能仍然需要在DefaultValueFormatter 中实现的库的数字设置选项

      要实现这一点,您只需创建一个新的格式化程序并从DefaultValueFormattergetFormattedValue 方法从DefaultValueFormatterOverride 扩展它,然后检查值是否大于0。

      public class NonZeroChartValueFormatter extends DefaultValueFormatter {
      
          public NonZeroChartValueFormatter(int digits) {
              super(digits);
          }
      
          @Override
          public String getFormattedValue(float value, Entry entry, int dataSetIndex,
                                          ViewPortHandler viewPortHandler) {
              if (value > 0) {
                  return mFormat.format(value);
              } else {
                  return "";
              }
          }
      }
      

      【讨论】:

      • 我遇到了类似的问题。我想在 PieChart 中隐藏 0 值的标签,我仍然想将它们保留在图例中。我覆盖了 ValueFormatter 但只设法隐藏 0 值而不是标签。有什么建议吗?请帮忙。
      • 此解决方案将隐藏 0 个标签,但仍将 0 个值保留为饼图条目。如果您不想将其保留为条目,则需要检查值是否为 0,并且不要将其添加为条目。
      【解决方案4】:

      Kotlin 开发者:

      class MyCustomValueFormatter : ValueFormatter() {
      override fun getFormattedValue(value: Float): String {
          return if (value == 0f) {
              ""
          } else {
              value.roundToInt().toString() + " %"
          }
        }
      }
      

      并像这样使用它

      pieData.setValueFormatter(MyCustomValueFormatter())
      

      【讨论】:

      • 我也在找这个。你的答案是唯一有效的:)
      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多