查看原文
其他

简介一些蜘蛛布局标签的饼图的绘制方法

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-07-05
简介一些蜘蛛布局标签的饼图的绘制方法
N个月前摸索了这种饼图的绘制方法。就是元素比较多,不显示标签的话仅靠图例的颜色标注就会很难分辨图中的区块所指示的元素;但是显示标签的话,直接显示在饼图上或外周又会导致很大的重叠。如果指示标签的连线能拐弯,就很清晰了,例如这样。


这类的饼图标签形似蜘蛛,也俗称蜘蛛布局标签的饼图。

找了几种可以实现这种风格饼图的方法。

 

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

 


链接

柱形图类:堆叠柱形图    分组柱形图    双向柱形图    蝴蝶图

箱线图类:箱线图    提琴图    密度提琴图饼图类:饼图扇形图    圆环图    旭日图    星形图    面积图类:堆叠面积图散点图类:二维散点图    三维散点图    火山图    曼哈顿图曲线图类:折线图和拟合线雷达图类:雷达图集合可视化:在线韦恩图    韦恩图    花瓣图    UpSet图圈图:关联弦图    简单弦图    基因组变异圈图三元相图:三元图树形图:聚类树    聚类树+堆叠柱形图    聚类树+排序散点图



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存