【问题标题】:How to set the numbers of labels displayed in a pie chart?如何设置饼图中显示的标签数量?
【发布时间】:2019-02-27 07:59:13
【问题描述】:

我在这张图的饼图中有 78 个标签。

我只想按降序显示前 3 个标签。

我该怎么做?

【问题讨论】:

    标签: java label jfreechart pie-chart


    【解决方案1】:

    创建自定义PieSectionLabelGenerator 并在您喜欢显示标签时返回null

    示例

    public class PieMaximumLabelsGenerator extends StandardPieSectionLabelGenerator {
    
        private static final long serialVersionUID = 1385777973353453096L;
        private int nrLabels;
        private boolean showFirst;
    
        /**
         * A custom label generator to show only limited numbers of labels
         * @param nrLabels, number of labels to show
         * @param showFirst, if true, show first labels otherwise show the last
         */
        public PieMaximumLabelsGenerator(int nrLabels, boolean showFirst){
            this.nrLabels = nrLabels;
            this.showFirst = showFirst;
    
        }
    
        @Override
        public String generateSectionLabel(PieDataset dataset, Comparable key) {
            int index = dataset.getIndex(key);
            if (showFirst){
                if (index>=nrLabels){
                    return null; //no more lables if index is above
                }
            }else{
                if (index<dataset.getItemCount()-nrLabels){
                    return null; //no labels if index is not enough
                }
            }
            return super.generateSectionLabel(dataset, key);
        }
    }
    

    然后将其设置为您的情节

    ((PiePlot) chart.getPlot()).setLabelGenerator(new  PieMaximumLabelsGenerator(3, false));
    

    输出,类似示例,但显示前 5 个值而不是后 3 个值,因此 ((PiePlot) chart.getPlot()).setLabelGenerator(new PieMaximumLabelsGenerator(5, true));


    但是,如果切片的弧角足够大,我的偏好是显示标签。这可以通过收集图表中项目的总值,然后使用generateSectionLabel中的Number value = dataset.getValue(key);计算角度来获得切片的当前角度(尺寸)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      相关资源
      最近更新 更多