Python Joypy绘制嵴线图实例:八大城市气温分布可视化
本文介绍如何使用Python的Joypy库绘制嵴线图,以展示八大城市日最高温和最低温的分布情况。通过解析数据读取、参数设置(如by、fill、alpha)及代码实现,演示多类别连续变量的分布对比方法,帮助读者掌握该可视化技巧。
一、概念介绍
嵴线图(ridgeline plot)是一种用于展示同一维度下多个数据分布情况的图表。其每一层嵴线(或称峰峦)实际上是一个直方图或密度图,通过层层堆叠形成最终的视觉效果。
此类图表通常适用于多类别(大于5类)连续变量数值的分布对比。需要注意的是,若某些数据的取值区间过小或分布过于均匀,其波动特征可能不易察觉,且可能影响图形的整体视觉美观度。
图形示例:

理解嵴线图的关键在于坐标轴的定义:横坐标代表数值分布区间,类似于常规图表中的y轴;纵坐标则代表每个数值序列的类别标签。嵴线的波峰位置表示在该值附近数据分布集中,频率较高。
二、数据展示
在本案例中,我们利用嵴线图来展示随机选取的八座城市在过去一年内的日最高温和最低温的分布情况。
数据来源于广州11月份天气|广州11月份气温|广州2021年11月份历史天气—全球天气网
借助爬虫工具,我们简便地收集了2020-12至2021-11期间的日度数据,得到了如下excel集合

每一个excel表格的数据呈现如下:

同一版数据,对于气候类型也绘制了马赛克图~
三、数据读入
import pandas as pd
city8_fullname_py = ['beijing','chongqing','wuhan','shenzhen','nanjing','guangzhou','chengdu','shanghai']
city8_fullname = ['北京','重庆','武汉','深圳','南京','广州','成都','上海']
weather_dic = {}
for i in range(len(city8_fullname)):
df = pd.DataFrame(pd.read_excel('./2021年城市气温数据/2021年气温数据'+city8_fullname_py[i]+'.xls'))
weather_dic[city8_fullname[i]] = df[['日期','最高温','最低温','气候类型']]
weather_dic[city8_fullname[i]]['城市'] = pd.Series([city8_fullname[i]]*df.shape[0])
weather = weather_dic[city8_fullname[0]]
for i in range(1,8):
weather = pd.concat([weather,weather_dic[city8_fullname[i]]],ignore_index="true")得到的数据存放在weather中,结构如下:

四、图像绘制
这里我们需要joypy包
import joypy
import matplotlib.pyplot as plt
plt.figure(dpi= 90)
fig, axes = joypy.joyplot(weather, column=['最高温', '最低温'], by="城市", figsize=(13,9),
fill=True, legend=True,alpha=.8,
xlabelsize=18,ylabelsize=18,color=['tomato','dodgerblue']
)
plt.title('八大城市过去一年气温分布', fontsize=25,verticalalignment='bottom' )
plt.savefig(r'./绘图结果/天气-过去一年气温分布-嵴线图.png')by参数用于指定图形中的纵坐标,即数据类别,这是必须指定的选项。
fill参数决定是否需要颜色填充。
alpha参数用于调整透明度。在面积图和嵴线图等存在图像覆盖的可视化场景中,建议调整透明度以便同时展示被覆盖部分的轮廓。当然,如果数据本身存在面积差异,则尽量将面积较小的类别前置。
结果如下所示:

总结
到此这篇关于python Joypy绘制嵴线图实例的文章就介绍到这了,更多相关python Joypy嵴线图内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













