你好,我是郭震
今天介绍脊线图的绘制。

脊线图(Ridgeline Plot)介绍

脊线图,又称为Joy Plot,是一种用于展示和比较多个组数据分布的可视化工具。这种图形以层叠和重叠的方式展示每个组的密度估计或频率分布,使得不同组之间的比较直观且具有艺术美感。
脊线图特别适合展示数据如何随时间或条件变化,常用于金融、气象、社会科学等领域。

绘制脊线图的步骤解释

以下是基于Python中joypy库来绘制脊线图的详细步骤解释:
# 导入必要的库
import pandas as pd

import joypy

from matplotlib import pyplot as plt

from matplotlib import cm

import numpy as np

  • 导入库:引入pandas用于数据处理,joypy用于生成脊线图,matplotlib.pyplotmatplotlib.cm用于图形展示和颜色映射。
  • **numpy**:用于生成或处理数学数据。
# 创建模拟数据
data = {

'Month'
: [
'January'
'February'
'March'
'April'
'May'
'June'
] * 10,

'Year'
: [
'Year 1'
]*6 + [
'Year 2'
]*6 + [
'Year 3'
]*6 + [
'Year 4'
]*6 + [
'Year 5'
]*6 + [
'Year 6'
]*6 + [
'Year 7'
]*6 + [
'Year 8'
]*6 + [
'Year 9'
]*6 + [
'Year 10'
]*6,

'Temperature'
: np.random.normal(loc=0.0, scale=1.0, size=60) + np.arange(60)%6

}

  • 数据字典:定义一个包含月份、年份和温度的字典。月份重复10次以模拟10年的数据,温度数据通过正态分布随机生成并添加一个随月份变化的趋势。
df = pd.DataFrame(data)

df[
'Month'
] = pd.Categorical(df[
'Month'
], categories=[

'January'
'February'
'March'
'April'
'May'
'June'
], ordered=True)

  • 创建DataFrame:使用pandas.DataFrame将数据字典转换为数据框。
  • 设置月份为有序分类:将Month列转换为有序的分类数据类型,确保在图形显示时月份能按正确的顺序排列。
# 绘制脊线图
fig, axes = joypy.joyplot(

    df,

    by=
'Month'
,

    column=
'Temperature'
,

    colormap=cm.plasma,

    figsize=(12, 8),

    overlap=0.1  
# 控制重叠
)

  • **joypy.joyplot()**:调用joyplot函数绘制脊线图,指定按Month分组,使用Temperature列的数据绘图,颜色映射为plasma,图形大小为12x8英寸,各图层重叠程度为0.1。
# 添加标题
plt.title(
'Monthly Temperature Distribution Over the First Half of the Year'
)

plt.show()

扩展

colormap(颜色映射)是用来将数据点映射到颜色的功能,它有许多内置的颜色映射可供选择。
  1. Perceptually Uniform Sequential:
    • viridis:暗的蓝绿色到明亮的黄色,这是Matplotlib的默认颜色映射。
    • plasma:从深紫色到亮黄。
    • inferno:从黑色到红色,最后是黄色。
    • magma:从黑色到亮粉红。
  2. Sequential:
    • BluesGreensReds:单一色调,从浅到深。
    • binarygray:从黑到白的灰度图。
    • copper:铜色调,从黑到亮铜色。
  3. Sequential (2):
    • springsummerautumnwinter:模拟四季的颜色变化。
    • cool:从青色到洋红色。
    • hot:从黑色到红色,然后到黄色,最终是白色。
colormap=cm.spring
colormap=cm.cool
更多颜色选择,同学们可以去尝试其他配色。

我打造了一个《Python从零到高薪就业全栈视频课》,目前上线700节课程,每节课15分钟,总共超180个小时。包括:《从零学Python》《Python进阶》《爬虫》《NumPy数值分析》《Pandas数据分析》《Matplotlib和Pyecharts绘图》《PyQt软件开发》《接单项目串讲》《Python办公自动化》《多线程和多进程》《unittest和pytest自动化测试》《Flask和Django网站开发》《基础算法》《人工智能入门》《机器学习》《深度学习》《Pytorch实战》,将我过去工作8年以及现在科研的经历都融入到课程中,里面有很多实际项目,是一个全栈技术课。
如果你想掌握全栈开发技术,提升你自己,提升就业能力,多学技能做副业项目赚钱等,可以报名,课程带有我的答疑。
价格现在比较优惠,推荐现在加入
。长按下方二维码查看,报名后加我微信:gz113097485

继续阅读
阅读原文