python用Joypy绘制嵴线图实例
目录
- 一、概念介绍
- 二、数据展示
- 三、数据读入
- 四、图像绘制
- 总结
一、概念介绍 嵴线图(ridgeline plot),用来展示同一维度的几个数据的分布情况,每一层嵴线(峰峦)都是一个直方图或者密度图,层层堆叠形成了最终的嵴线图。
【python用Joypy绘制嵴线图实例】· 嵴线图一般用于多类别(>5) 的连续变量数值分布对比,也因此,如果某一个数据的取值区间过小或者分布平均时,波动不易察觉,且影响图形呈现的视觉美观。
图形示例:
文章图片
我们需要了解的是:嵴线图的横坐标是数值分布区间,更像我们常使用的y轴;而纵坐标是每一个数值序列的类标;嵴线的波峰代表在对应值分布集中, 频率高。
二、数据展示 在本案例中,我们希望通过嵴线图展示随机选择的八座城市在过去一年的日最高温最低温分布情况。
数据来源于广州11月份天气|广州11月份气温|广州2021年11月份历史天气—全球天气网
借助了爬虫工具,我们简便地收集了2020-12至2021-11的日度数据,得到如下excel集合
文章图片
每一个excel表格的数据呈现如下:
文章图片
同一版数据,对于气候类型也绘制了马赛克图~
三、数据读入
import pandas as pdcity8_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 joypyimport 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嵴线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 使用java的milo框架访问OPCUA服务的过程
- resty的缓存技术设计及使用
- Python真题案例之小学算术|Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解
- 使用resty|使用resty Quartz执行定时任务的配置方法
- 使用Feign配置请求头以及支持Https协议
- resty|resty client使用Java客户端来访问Api
- Python中转换数据类型的函数
- Python中常用数据类型转换函数的使用方法和步骤
- Pycharm交互式开发环境的使用方法
- 如何用Python实现自动发送微博