作者mikemike1021 (mike)
看板Python
标题[心得] 将多个 boxplot 画在同一张
时间Fri Sep 9 05:46:50 2022
论坛无广告完整版:
https://forum.community.tw/t/topic/323
差在含有程式码及 latex 的部分,整个贴过来不好阅读
之前有在板上介绍:
https://webptt.com/cn.aspx?n=bbs/Python/M.1659038907.A.9C2.html
论坛可以方便大家分享有关电脑或程式相关的事情。
使用 markdown、程式码自动上色、支援 latex 还有标签。
可以直接将程式码贴上,问问题或者解答时就不需要再利用额外网站,达到方便阅读
的效果,另外更将问题跟程式码摆在一块,让别人更好搜寻。
问答也可以使用类似於 stackoverflow 的形式。
正文开始
使用 matplotlib 的 boxplot ,将不同种但有相同分析指标的画在一起,方便对比同一
指标下不同种的差别。直接使用 boxplot 是没办法将不同资料组合在一起,但可以藉由
指定位置跟宽度,来达成所需,最後可以画出类似於下图或封面图的效果。除此之外,也
会顺带介绍一些 boxplot 相关参数。
https://imgur.com/8lTHLkT.png
boxplot 参数介绍
https://imgur.com/JXDIguf.png
上图是将我们後面用到的相关参数表现出来:
- 左侧是调整 boxplot 的各个部分 (flier, cap, whisker, box, media) 的影响范围,
并由 *props 所设置(如 flierprops, capprops 等)
- 下方 xtick 预设会是从 1 至 num of cols,每一个 column 产生一个 box
- width 预设是 0.5 且是整个 box 的宽度
- position 是中心点且预设为 xtick 上
将多个 boxplot 画在一起
虽然 matplotlib 并不直接让我们能够结合多个 boxplot,但藉由设定 width,
position 可以将各个 box 排好,再藉由颜色来区分。
https://imgur.com/5VwT9b0.png
空间计算详见论坛版,简而言之,分配给每一组有 total width / n 的空间,但只画
total width / (n+1) 来区隔各组。
当然这里可以依据自己所需来改变。
实作的程式码就请见论坛
展示
这里偷懒,直接把颜色当图例的名字使用
- 三个指标(num_label)、四种类别(num_kind)
https://imgur.com/6Q8ztaE.png
- 四种指标、七种类别
https://imgur.com/8lTHLkT.png
参考资料:matplotlib boxplot 跟几篇 stackoverflow (网址请见论坛)
最後再次邀请大家来论坛
https://forum.community.tw 试试,希望能够更方便大家讨论
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 46.223.163.124 (德国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1662673612.A.982.html
1F:推 wisad: 赞 09/15 08:28