简介一些蜘蛛布局标签的饼图的绘制方法
这类的饼图标签形似蜘蛛,也俗称蜘蛛布局标签的饼图。
找了几种可以实现这种风格饼图的方法。
WPS饼图
其实第一眼看上去觉得上述示例图很像Excel的风格,但是查看后Excel默认的饼图样式中没有。
然后又看了WPS的饼图,这里不讨论WPS使用体验咋样,但这种国产工具通常都会提供丰富的在线样式(大家懂的),其中就包括这类蜘蛛布局标签的饼图。
选择作图数据,选择某种样式后,再略加调整就可得到了。
G2Plot的交互式饼图
G2Plot(https://g2.antv.vision/zh)是一套简单、易用、并具备一定扩展能力和组合能力的统计图表库。
G2Plot提供了在线作图工具,简单易学:
https://antv-g2plot.gitee.io/zh/examples/gallery
其中就包含了蜘蛛布局标签的饼图的可视化方案。
G2Plot的本地配置,大家有兴趣可自行摸索,反正我是失败了……
pyecharts的交互式饼图(python作图)
pyecharts(http://pyecharts.herokuapp.com/)是一款将python与echarts结合的强大的数据可视化工具,可用于绘制多种交互式图形。在它的库中,提供了蜘蛛布局标签的饼图的可视化方案。
网上能找到的教程大多是旧版pyecharts的,新版pyecharts变更太大且文档不全一时折腾不出来(本人用python大多都是处理文本,极少作图,不太会搞),下面还是展示的使用旧版pyecharts作图。
#安装旧版 pyecharts,没啥,因为新版的教程少,没看懂.......#在这个链接下载旧版 pyecharts
#https://files.pythonhosted.org/packages/52/b8/e46a41c44176cd247cb1fd437e38e179ea604de28c91755c30be1046772c/pyecharts-0.5.11-py2.py3-none-any.whl
#注意使用 python3 环境
#对于 conda 的 python3,先把下载下的 pyecharts-0.5.11-py2.py3-none-any.whl 放在 conda 的 pkgs 路径下
#最后执行安装,shell 命令行
pip install pyecharts-0.5.11-py2.py3-none-any.whl
进入python3作图,一个示例如下。
最后输出网页文件html,交互式图形,并可从中获取png图片。
##进入 python3,执行from pyecharts import Pie
label = ['Proteobacteria', 'Acidobacteria', 'Bacteroidetes', 'Actinobacteria', 'Gemmatimonadetes', 'Firmicutes', 'Chloroflexi', 'Verrucomicrobia', 'Nitrospirae', 'Latescibacteria', 'Others']
value = [0.455, 0.115, 0.151, 0.079, 0.090, 0.007, 0.020, 0.015, 0.019, 0.009, 0.040]
pie = Pie()
pie.add('', label, value, is_label_show = True, label_color= ['#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5', 'gray'])
#pie.add('', label, value, is_label_show = True, is_legend_show = False, label_color= ['#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5', 'gray'])
pie.render(path = 'pie.html')
plotly的交互式饼图(R作图)
其实最初是想用R搞定的,无奈一直没找到可用R包能够绘制这类饼图。想想大神们无需调用任何包就可以用基本元件从头构建,可惜咱也根本没那水平啊
plotly包的交互式饼图倒是可以把标签显示在外侧防止重叠,尽管样式不是“蜘蛛布局标签”,但也是非常美观的。
注:plotly(https://plot.ly/)是数据可视化的强大工具,支持python、javascript、matlab、R等许多API,大家感兴趣可自行摸索,这里只展示R环境的plotly。
dat <- data.frame(label = c('Proteobacteria', 'Acidobacteria', 'Bacteroidetes', 'Actinobacteria', 'Gemmatimonadetes', 'Firmicutes', 'Chloroflexi', 'Verrucomicrobia', 'Nitrospirae', 'Latescibacteria', 'Others'),
value = c(0.455, 0.115, 0.151, 0.079, 0.090, 0.007, 0.020, 0.015, 0.019, 0.009, 0.040))
library(plotly)
p <- plot_ly(dat, labels = ~label, values = ~value, type = 'pie', textposition = 'outside', textinfo = 'label+percent') %>%
layout(title = 'Letters', xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
p