数据, 术→技巧

Python数据可视化之峰峦图

钱魏Way · · 0 次浏览

joypy简介

joypy 是一个用于生成 Joy Division 风格的图表的 Python 包。它专注于绘制Joyplots(也称为 Ridgeline Plots 或者 Mountain Plots)。Joyplot 是一种在有限的垂直空间内展示多组数据分布情况的图表,特别适用于展示多个变量或类别的分布,同时保持每个类别或变量的分布可比较。它们通过堆叠或重叠的密度图(通常是核密度估计图)来展示数据。joypy类似于小提琴图(violin plots),但小提琴图通常不会重叠,而 Joyplots 会将不同组的分布重叠在一起,以提供一个紧凑且连续的可视化效果。

为什么要使用峰峦图?

  • 平滑展示数据分布:与传统的条形图或直方图相比,山脊线图提供了一种更平滑、更直观的方式来展示数据的分布情况。
  • 比较能力:山脊线图非常适合比较多个分布的形状和大小,清晰地展示不同组之间的变化和趋势。
  • 空间效率:通过在单个图中堆叠,山脊线图可以有效地利用空间,避免了创建多个单独的密度图。
  • 美观性:山脊线图在视觉上吸引人,用不同的颜色和样式区分不同的组,使得数据更加生动和直观。
  • 趋势识别:可以轻松识别多个群体数据中的共同模式和异常值。
  • 适用于大量数据集:山脊线图适用于展示大量数据集,而不会显得拥挤或不清晰。

主要特点

  • 易于使用:joypy的API设计简单明了,用户可以轻松地创建Joyplots图表。
  • 多样化的图表样式:用户可以通过调整参数来创建不同样式的Joyplots图表,例如修改颜色、线条宽度和透明度等。
  • 支持多种数据类型:joypy支持多种数据类型,包括pandas DataFrame、numpy数组和Python列表等。
  • 高度可定制化:用户可以使用matplotlib的基础功能来进一步自定义Joyplots图表,例如添加标签、修改图例和调整坐标轴等。

使用场景

  • 比较不同组的数据分布:例如,如果你有不同地区的人口年龄分布数据,可以使用 Joy Plot 来直观比较这些分布。
  • 时间序列分析:如果数据随时间变化,Joy Plot 可以帮助展示这种趋势,例如展示一周内每天的温度变化。

注意事项

  • 大量数据:对于大规模数据集,Joy Plot 可能会变得难以解读,特别是当线条过多重叠时。
  • 解读方式:虽然 Joy Plot 在视觉上很吸引人,但对于不熟悉这种类型图表的观众,可能需要一些解释。

joypy的使用

要安装 joypy,可以使用 pip:pip install joypy

def joyplot(data, column=None, by=None, grid=False, xlabelsize=None, xrot=None, ylabelsize=None, yrot=None, ax=None, figsize=None, hist=False, bins=10, fade=False, ylim='max', fill=True, linecolor=None, overlap=1, background=None, labels=None, xlabels=True, ylabels=True, range_style='all', x_range=None, title=None, colormap=None, color=None, normalize=True, floc=None, **kwds)

参数说明:

  • data:DataFrame、Series 或嵌套集合
  • column:字符串或序列。如果传入,将用于将数据限制为特定列的子集
  • by:对象,可选。如果传入,用于形成单独的绘图组
  • grid:布尔值,默认值为 True。是否显示轴网格线
  • labels:布尔值或列表,默认值为 True。如果是列表,必须与 de 的大小相同
  • xlabelsize:整数,默认值为 None。如果指定,则更改 x 轴标签的大小
  • xrot:浮点数,默认值为 None。x 轴标签的旋转角度
  • ylabelsize:整数,默认值为 None。如果指定,则更改 y 轴标签的大小
  • yrot:浮点数,默认值为 None。y 轴标签的旋转角度
  • ax:matplotlib 轴对象,默认值为 None
  • figsize:元组。默认情况下,以英寸为单位创建图形的大小
  • hist:布尔值,默认值为 False
  • bins:整数,默认值为 10。要使用的直方图箱数
  • color:用于绘图的颜色或颜色列表。可以是:
    • 一个字符串或任何可以被 matplotlib 解释为颜色的内容;
    • 一个颜色列表。有关更多详细信息,请参阅文档/示例。
  • kwds:其他绘图关键字参数。传递给直方图/核密度估计(KDE)绘图函数

使用示例:

import pandas as pd
import matplotlib.pyplot as plt
from joypy import joyplot

iris = pd.read_csv("seaborn-data/iris.csv")
selected_cols = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
fig, ax = plt.subplots()
my_title = 'Distribution of features in the iris dataset'
fig, axes = joyplot(data=iris, ax=ax, by='species', column=selected_cols, xlabelsize=14, ylabelsize=14, grid=True, hist=False, color=['#FF0066', '#9400D3','#002FA7', '#FFB900'], legend=True, title=my_title, alpha=0.86)
plt.show()

参考链接:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注