python用Joypy绘制嵴线图实例

作者:林老头ss 时间:2022-03-07 02:50:43 

一、概念介绍

嵴线图(ridgeline plot),用来展示同一维度的几个数据的分布情况,每一层嵴线(峰峦)都是一个直方图或者密度图,层层堆叠形成了最终的嵴线图。

· 嵴线图一般用于多类别(>5) 的连续变量数值分布对比,也因此,如果某一个数据的取值区间过小或者分布平均时,波动不易察觉,且影响图形呈现的视觉美观。

图形示例:

python用Joypy绘制嵴线图实例

我们需要了解的是:嵴线图的横坐标是数值分布区间,更像我们常使用的y轴;而纵坐标是每一个数值序列的类标;嵴线的波峰代表在对应值分布集中, 频率高。

二、数据展示

在本案例中,我们希望通过嵴线图展示随机选择的八座城市在过去一年的日最高温最低温分布情况。

数据来源于广州11月份天气|广州11月份气温|广州2021年11月份历史天气—全球天气网

借助了爬虫工具,我们简便地收集了2020-12至2021-11的日度数据,得到如下excel集合

python用Joypy绘制嵴线图实例

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

python用Joypy绘制嵴线图实例

同一版数据,对于气候类型也绘制了马赛克图~

三、数据读入

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中,结构如下:

python用Joypy绘制嵴线图实例

四、图像绘制

这里我们需要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绘制嵴线图实例

来源:https://blog.csdn.net/qq_45400322/article/details/122519911

标签:Python,joypy
0
投稿

猜你喜欢

  • 浅谈python累加求和+奇偶数求和_break_continue

    2021-03-06 06:56:03
  • 使用Rotate Master实现MySQL 多主复制的实现方法

    2024-01-13 11:23:25
  • 在pycharm中设置显示行数的方法

    2022-09-28 19:35:44
  • sql server查询时间技巧分享

    2024-01-15 06:54:05
  • Python遍历字典方式就实例详解

    2021-02-16 08:50:58
  • 解决Atom安装Hydrogen无法运行python3的问题

    2021-07-19 22:16:01
  • python切片中内存的注意事项总结

    2022-12-23 00:04:09
  • python matplotlib工具栏源码探析二之添加、删除内置工具项的案例

    2022-05-16 19:31:22
  • Python使用docx模块处理word文档流程详解

    2023-03-08 15:45:06
  • python实现逻辑回归的方法示例

    2021-07-27 17:04:24
  • Python如何读写CSV文件

    2023-03-23 08:41:13
  • MySQL中修改库名的操作教程

    2024-01-22 19:19:22
  • PHP截取指定图片大小的方法

    2023-09-11 13:20:21
  • 利用Python实现简单的相似图片搜索的教程

    2023-10-24 18:45:36
  • Python 数据清洗删除缺失值替换缺失值详情

    2022-03-02 05:46:11
  • 用vue.js组件模拟v-model指令实例方法

    2022-04-16 10:12:23
  • MySQL数值类型溢出的处理方法

    2024-01-19 12:03:34
  • IE6/7关于 Absolute Position 、relative 的一些意外

    2008-11-27 11:34:00
  • python中的多重继承实例讲解

    2022-06-18 01:51:05
  • mysql创建Bitmap_Join_Indexes中的约束与索引

    2024-01-15 18:25:50
  • asp之家 网络编程 m.aspxhome.com