使用 seaborn 绘制累积条形图
最近想看下某地区近几年降雨量如何变化,获得的数据是分年分月的,打算绘制按年份累积每月降雨量的条形图。搜索教程,主要有以下几种方法。
- 方法1:使用 seaborn 的
barplot()函数,在 x 相同位置,分别绘制112月累积量、111月累积量、1~10月累积量,以此类推直至1月降雨量。每次绘制使用颜色不同,后绘制的相当于把前绘制的条状遮住一部分。需要调用12次barplot()函数。参考文章点这里 - 方法2:使用 matplotlib 的
bar()函数,按年分别绘制每月的降雨量条形图,通过参数bottom指定所绘制的月份条形图下方是哪个月的条形图,相当于一层一层的柱子码起来。需要调用12次bar()函数。参考文章点这里 - 方法3:使用 seaborn 的
histplot()函数,设置multiple参数为stack,weights参数为需要累积的量,既可绘制累积条形图。只需条用1次histplot()函数。参考文章点这里。这篇文章另外还介绍了如何使用 matplotlib、pandas、plotnine、altair 绘制累积条形图。
前两种方法太繁琐,采用第3种方法。搜相关教程有个感悟,要想快速准确找到资料,搜英文文章,或者直接在 seaborn 官方教程找。
下面开始代码操练。
| |

绘制出来的图确实是个月降雨量累积,但有以下几个问题:
- 数据从 2006 年至 2021 年,应该有 16 条柱子,图中只有10条,需要通过
bins参数指定柱子数量。 - 图列挡住图像了,需要将图幅扩大。
- 相邻的柱子紧挨在一起,看着不舒服。
- x 轴的刻度线没在柱子下方正中间,需要指定刻度线位置。
- x 轴刻度标签没有将所有年份都显示,需要指定刻度线标签。
- y 轴标签应该是降雨量,需指定。
- 没有图名,需添加。
- x、y 轴标签文字字体有些小,需加大。
- 更改柱子颜色为绿色。
解决以上问题,优化后代码如下。具体参数说明见代码注释。
| |
