4.3.4 多变量可视化

多数绘图函数都支持使用hue参数设置一个类别变量,统计时按此类别分组统计并在绘图时使用颜色区分。

例如对小提琴图设置hue参数添加性别类别:

sns.violinplot(data=penguins, x="species", y="bill_length_mm", hue="sex", split=True)
图片[1]-4.3.4 多变量可视化-大赛人网

4.3.5 Seaborn样式

在Seaborn中,样式(style)控制了图表的整体外观,包括背景色、网格线、刻度线等元素。Seaborn提供了一些内置的样式选项,可以通过seaborn.set_style()来设置当前图表的样式。常见的样式有以下几种:

  • white:纯白背景,没有网格线。
  • dark:深色背景,带有网格线。
  • whitegrid:白色背景,带有网格线。

darkgrid:深色背景,带有网格线(默认样式)。

sns.set_style("darkgrid")
sns.histplot(data=penguins, x="island", kde=True)
图片[2]-4.3.4 多变量可视化-大赛人网

4.4  Pandas可视化

pandas提供了非常方便的绘图功能,可以直接在DataFrame或Series上调用plot()方法来生成各种类型的图表。底层实现依赖于Matplotlib,pandas的绘图功能集成了许多常见的图形类型,易于使用。

4.4.1 单变量可视化

使用sleep(睡眠健康和生活方式)数据集,其中包含13个字段:

  • person_id:每个人的唯一标识符。
  • gender:个人的性别(男/女)。
  • age:个人的年龄(以岁为单位)。
  • occupation:个人的职业或就业状况(例如办公室职员、体力劳动者、学生)。
  • sleep_duration:每天的睡眠总小时数。
  • sleep_quality:睡眠质量的主观评分,范围从 1(差)到 10(极好)。
  • physical_activity_level:每天花费在体力活动上的时间(以分钟为单位)。
  • stress_level:压力水平的主观评级,范围从 1(低)到 10(高)。
  • bmi_category:个人的 BMI 分类(体重过轻、正常、超重、肥胖)。
  • blood_pressure:血压测量,显示为收缩压与舒张压的数值。
  • heart_rate:静息心率,以每分钟心跳次数为单位。
  • daily_steps:个人每天行走的步数。
  • sleep_disorder:存在睡眠障碍(无、失眠、睡眠呼吸暂停)。

加载数据:

import pandas as pd

df = pd.read_csv("data/sleep.csv")
df.info()  # 查看数据集信息
# RangeIndex: 400 entries, 0 to 399
# Data columns (total 13 columns):
#  #   Column                   Non-Null Count  Dtype
# ---  ------                   --------------  -----
#  0   person_id                400 non-null    int64
#  1   gender                   400 non-null    object
#  2   age                      400 non-null    int64
#  3   occupation               400 non-null    object
#  4   sleep_duration           400 non-null    float64
#  5   sleep_quality            400 non-null    float64
#  6   physical_activity_level  400 non-null    int64
#  7   stress_level             400 non-null    int64
#  8   bmi_category             400 non-null    object
#  9   blood_pressure           400 non-null    object
#  10  heart_rate               400 non-null    int64
#  11  daily_steps              400 non-null    int64
#  12  sleep_disorder           110 non-null    object
# dtypes: float64(2), int64(6), object(5)
# memory usage: 40.8+ KB

柱状图

柱状图用于展示类别数据的分布情况。它通过一系列矩形的高度(或长度)来展示数据值,适合对比不同类别之间的数量或频率。简单直观,容易理解和比较各类别数据。

使用柱状图展示不同睡眠时长的数量。

pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().plot.bar(
    color=["red", "green", "blue", "yellow", "cyan", "magenta", "black", "purple"]
图片[3]-4.3.4 多变量可视化-大赛人网

折线图

折线图通常用于展示连续数据的变化趋势。它通过一系列数据点连接成的线段来表示数据的变化。能够清晰地展示数据的趋势和波动。

使用折线图展示不同睡眠时长的数量。

pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot()
图片[4]-4.3.4 多变量可视化-大赛人网

面积图

面积图是折线图的一种变体,线下的区域被填充颜色,用于强调数据的总量或变化。可以更直观地展示数据量的变化,适合用来展示多个分类的累计趋势。

使用面积图展示不同睡眠时长的数量。

pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot.area()
图片[5]-4.3.4 多变量可视化-大赛人网

直方图

直方图用于展示数据的分布情况。它将数据范围分成多个区间,并通过矩形的高度显示每个区间内数据的频率或数量。可以揭示数据分布的模式,如偏态、峰度等。

使用直方图展示不同睡眠时长的数量。

df["sleep_duration"].value_counts().plot.hist()
图片[6]-4.3.4 多变量可视化-大赛人网

饼状图

饼状图用于展示一个整体中各个部分所占的比例。它通过一个圆形图形分割成不同的扇形,每个扇形的角度与各部分的比例成正比。能够快速展示各部分之间的比例关系,但不适合用于展示过多的类别或比较数值差异较小的部分。

使用饼状图展示不同睡眠时长的占比。

pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot.pie()
图片[7]-4.3.4 多变量可视化-大赛人网
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容