java. 饼图的下面标签显示_饼图的数据标签太乱怎么办?

原标题:饼图的数据标签太乱怎么办?

有时候,不是我们做图的水平,而是数据本身,让图表又乱又丑。比如下面的饼图,分析云课堂用户的支付方式,结果长这样。

5510e5eb3b7ee8707a18e3d7ddeff06c.png

821f37d498f3f8a4c6835218b2ab6608.png

其实这个丑还算好的,只是像个长了秧子的大萝卜,有时候饼图长得像个八爪鱼、甲壳虫或者大王八,那才叫一个难看呢。

有人说,这个好办,使用复合饼图呀,将那些太小的项目合并起来作为其他,再用个小饼图表示。

47b05ccea4c43c794db51fccaca41933.png

这是个处理办法,不过,我在专业媒体上从来没看到过这种用法,因此也不推荐。因为其他部分并不再构成一个整体,所以不宜再使用一个饼图。

即使要用,可以用下面的复合饼条图。

df0a645dcb5bb7de6c56f3639479a7c2.png

对于饼图的标签排列,我们有两种优化方式,一种是下图的水平引导线方式,比较整齐。但依然不适合这种极端的数据情况,最后几个重叠得厉害,需要手工干预的工作量太大。

b91dbe508fff9c9f4997e282cfdffd04.png

另一种是下图的内外标签法,将类别标签和数值标签分别放置在饼图的内外,thinkcell的饼图标签即采用这种方式。同样,在这种极端数据情况下也难以清晰。

ebad6ba4ffc5805abee080c0fac6227e.png

在这种极端的数据情况下,我们推荐的方式是,改用条形图,如下图,非常清晰可比。通常,条形图都可以替代饼图。

ddd88dc93043da20cbeb58d5405cbf28.png

有人可能会问,这里支付宝的条形太长,后面的太短,怎么把支付宝的条形截断一下?我们的建议是不要截断,保持数据原本的样子就好。thinkcell倒是可以很方便地截断,但Excel里要实现也太麻烦了。

这是数据让饼图太乱的情况,你还遇到什么情况,数据让图表太难看?截图来大家开心一下:)

本周内点击【阅读原文】链接,迎国庆,有惊喜。返回搜狐,查看更多

责任编辑:

你可以使用 `PieSectionLabelGenerator` 接口的 `generateSectionLabel` 方法来设置饼图标签显示格式。具体来说,你需要实现该接口并重写 `generateSectionLabel` 方法来返回你想要显示标签字符串。 下面是一个示例代码,展示如何生成一个带有百分比小数位数的饼图: ```java import org.jfree.chart.*; import org.jfree.chart.labels.*; import org.jfree.chart.plot.*; import org.jfree.data.general.*; public class PieChartExample { public static void main(String[] args) { // 创建数据集 DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("A", 30); dataset.setValue("B", 20); dataset.setValue("C", 50); // 创建饼图并设置标签显示格式 JFreeChart chart = ChartFactory.createPieChart( "Pie Chart Example", dataset, true, // legend true, // tooltips false // URLs ); PiePlot plot = (PiePlot) chart.getPlot(); plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} ({2})", null, "%.1f%%")); // 显示图形 ChartFrame frame = new ChartFrame("Pie Chart", chart); frame.pack(); frame.setVisible(true); } } ``` 在上面的代码中,我们使用 `StandardPieSectionLabelGenerator` 类来设置标签字符串格式。其中第一个参数 `{0} ({2})` 表示使用 `{0}` 来表示饼图扇形的名称,使用 `{2}` 来表示饼图扇形所占百分比。第二个参数 `null` 表示不使用其他标签信息。第三个参数 `"%.1f%%"` 表示将百分比格式化为一位小数,并在后面添加 `%` 符号。 你可以根据需要修改上述代码以生成所需的饼图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值