python用Joypy绘制嵴线图实例

目录
  • 一、概念介绍
  • 二、数据展示
  • 三、数据读入
  • 四、图像绘制
  • 总结

一、概念介绍

嵴线图(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嵴线图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python爬取气象台每日天气图代码

    目录 前言 1.安装Selenium 2. 安装chromedriver 3.代码 前言 中央气象台网站更新后,以前的爬虫方式就不太能用了,我研究了一下发现主要是因为网站上天气图的翻页模式从点击变成了滑动,页面上的图片src也只显示当前页面的,因此,按照网络通俗的方法去爬取就只能爬出一张图片.看了一些大佬的教程后自己改出来一个代码. 1.安装Selenium Selenium是一个Web的自动化(测试)工具,它可以根据我们的指令,让浏览器执行自动加载页面,获取需要的数据等操作. pip inst

  • python用Joypy绘制嵴线图实例

    目录 一.概念介绍 二.数据展示 三.数据读入 四.图像绘制 总结 一.概念介绍 嵴线图(ridgeline plot),用来展示同一维度的几个数据的分布情况,每一层嵴线(峰峦)都是一个直方图或者密度图,层层堆叠形成了最终的嵴线图. · 嵴线图一般用于多类别(>5) 的连续变量数值分布对比,也因此,如果某一个数据的取值区间过小或者分布平均时,波动不易察觉,且影响图形呈现的视觉美观. 图形示例: 我们需要了解的是:嵴线图的横坐标是数值分布区间,更像我们常使用的y轴:而纵坐标是每一个数值序列的类标:

  • 用Python绘制漫步图实例讲解

    我们首先来看下代码: import matplotlib.pyplot as plt from random import choice class RandomWalk(): def __init__(self,num_points=5000): self.num_points=num_points self.x_values=[0] self.y_values=[0] def fill_walk(self): while len(self.x_values)<self.num_points:

  • python绘制雷达图实例讲解

    在python中,有很多用于生成基于JS的百度开源的数据可视化图表 Echarts 的类库.设置的图样都非常漂亮,小编之前研究过很多图示,用python去抓取数据,然后进行画图,经历这么多得图样,最深有感触的还是关于绘制雷达图,大家应该都遇到过需要用到雷达图的时候吧,那就一起来了解下吧. 安装模块: pip install pyecharts 导入模块: from pyecharts import options as opts 准备数据: 大家可以自行导入数据使用. 绘制雷达图: randar

  • Python中使用matplotlib模块errorbar函数绘制误差棒图实例代码

    目录 1.基本参数 2.代码实现 3.结果显示 4.更多参数请参考matplotlib官网 总结 Python的matplotlib模块中的errorbar函数可以绘制误差棒图,本次主要绘制不带折线的误差棒图. 1.基本参数 errorbar函数的基本参数主要有: x,y:主要定于二维数据的横纵坐标值 yerr :定义y轴方向的误差棒的大小,可以是一个数,也可以是二维数组(分别传递平均值与最小值的差和最大值与平均值的差). xerr:定义y轴方向的误差棒的大小,同样也可以是一个数,也可以是二维数

  • Python中pygal绘制雷达图代码分享

    pygal的安装和简介,大家可以参阅<pip和pygal的安装实例教程>,下面看看通过pygal实现绘制雷达图代码示例. 雷达图(Radar): import pygal radar_chart = pygal.Radar() radar_chart.title = 'V8 benchmark results' radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegEx

  • Python通过matplotlib绘制动画简单实例

    Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等. matplotlib从1.1.0版本以后就开始支持绘制动画,具体使用可以参考官方帮助文档.下面是一个很基本的例子: """ A simple example of an animated plot """ import n

  • Python学习pygal绘制线图代码分享

    pygal的安装大家可以参阅:pip和pygal的安装实例教程 线图: import pygal line_chart = pygal.Line() line_chart.title = 'Browser usage evolution (in %)' line_chart.x_labels = map(str, range(2002, 2013)) line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3,

  • python傅里叶变换FFT绘制频谱图

    本文实例为大家分享了python傅里叶变换FFT绘制频谱图的具体代码,供大家参考,具体内容如下 频谱图的横轴表示的是 频率, 纵轴表示的是振幅 #coding=gbk import numpy as np import pandas as pd import matplotlib.pyplot as plt #依据快速傅里叶算法得到信号的频域 def test_fft(): sampling_rate = 8000 #采样率 fft_size = 8000 #FFT长度 t = np.arang

  • python使用matplotlib绘制雷达图

    本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['KaiTi'] # 显示中文 labels = np.array([u'总场次', u'吃鸡数', u'前十数',u'总击杀']) #

  • python处理excel绘制雷达图

    本文实例为大家分享了python处理excel绘制雷达图的具体代码,供大家参考,具体内容如下 python处理excel制成雷达图,利用工具plotly在线生成,事先要安装好xlrd组件 代码: import xlrd //事先要下载好xlrd组件 import plotly.plotly as py import plotly.graph_objs as go from plotly import tools from plotly.graph_objs import * tools.set_

随机推荐