Study:day16-数据可视化进阶之Seaborn模块

Study:day16-数据可视化进阶之Seaborn模块

1.1 Seaborn的基本使用

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import sys
import seaborn as sns

print('Python version:', sys.version)
print('Pandas version:', pd.__version__)
print('Numpy version:', np.__version__)
print('Matplotlib version:', matplotlib.__version__)
Python version: 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:56) [MSC v.1929 64 bit (AMD64)]
Pandas version: 2.2.2
Numpy version: 1.26.4
Matplotlib version: 3.8.4
tips = pd.read_csv("./data/tips.csv")
tips.head()
消费金额 ($) 小费金额 ($) 客人性别 是否吸烟 周几 就餐时间 一起就餐人数 (个)
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
plt.rcParams['font.sans-serif'] = ['STsong']
sns.relplot(
    data=tips,  # 指定数据集
    x="小费金额 ($)",  # 指定x轴变量
    y="消费金额 ($)",  # 指定y轴变量
    col="就餐时间",  # 设置就餐时间为种类,按照分面仅限绘图
    hue="是否吸烟",  # 散点颜色按照是否吸烟变化
    style="客人性别",  # 散点种类按照客人性别变化
    size=100,
)
plt.savefig("./image/seaborn_01.png")

在这里插入图片描述

1.2 seaborn 中的两类绘图函数

  1. figure-level(图形级别的):类似于在matplotlib中,通过plt.figure()创建一个包含多个子图的对象,他们管理一个整体的图形对象
  2. axes-level(坐标轴级别的):可以针对某个特定的子图进行高度的定制化,类似于在matplotlib中使用ax对象进行绘图,可以精确地控制图形的各个细节

1.2.1 figure-level(图形级别的)

penguins = pd.read_csv("./data/penguins.csv")
plt.rcParams['font.sans-serif'] = ['STsong']
sns.displot(
    data=penguins,
    x="喙长 (毫米)",
    hue="企鹅的种类",
    col="企鹅的种类",
    palette=["red", "blue", "green"],
    binwidth=1,  # 缺点很明显,很多时候不能对子图做定制化
    height=5,  # 通过height调整图形的高度
    aspect=1,  # 通过height*aspect设置图形的宽度
)
<seaborn.axisgrid.FacetGrid at 0x295b00c3dd0>

在这里插入图片描述

penguins
企鹅的种类 岛屿 喙长 (毫米) 喙深 (毫米) 鳍长 (毫米) 体重 性别
0 Adelie Torgersen 39.1 18.7 181.0 3750.0 MALE
1 Adelie Torgersen 39.5 17.4 186.0 3800.0 FEMALE
2 Adelie Torgersen 40.3 18.0 195.0 3250.0 FEMALE
3 Adelie Torgersen NaN NaN NaN NaN NaN
4 Adelie Torgersen 36.7 19.3 193.0 3450.0 FEMALE
... ... ... ... ... ... ... ...
339 Gentoo Biscoe NaN NaN NaN NaN NaN
340 Gentoo Biscoe 46.8 14.3 215.0 4850.0 FEMALE
341 Gentoo Biscoe 50.4 15.7 222.0 5750.0 MALE
342 Gentoo Biscoe 45.2 14.8 212.0 5200.0 FEMALE
343 Gentoo Biscoe 49.9 16.1 213.0 5400.0 MALE

344 rows × 7 columns

1.2.2 axes-level多子图个性化

fig, axs = plt.subplots(1, 2, figsize=(12, 4), dpi=100,
                        gridspec_kw=dict(width_ratios=[4, 2])
                        )
sns.scatterplot(
    data=penguins,
    x="喙深 (毫米)",
    y="喙长 (毫米)",
    hue="企鹅的种类",
    ax=axs[0]
)

sns.histplot(
    data=penguins,
    x="企鹅的种类",
    hue="企鹅的种类",
    ax=axs[1],
    shrink=.5,
)
<Axes: xlabel='企鹅的种类', ylabel='Count'>

在这里插入图片描述

1.3 相关关系图-relational plots

tips = pd.read_csv("./data/tips.csv")

sns.relplot(
    data=tips,  # 指定数据集
    x="消费金额 ($)",  # 指定x轴变量名称
    y="小费金额 ($)",  # 指定y轴变量名称
    color="red",  # 如果是散点图,设定点的颜色
    hue="客人性别",  # 用于确认不同数据集的变量名称,通常用不同的颜色表示
    kind="scatter",  # 指定图表的类型
    col="是否吸烟",  # 用于在不同的列上创建子图的变量
    col_order=["Yes", "No"],  # 对于不同行上的数据做排序
    row="就餐时间",  # 用于在不同的行上创建子图的变量
    row_order=["Lunch", "Dinner"],  # 对于不同的行上的数据做排序

    size="一起就餐人数 (个)",  # 点的大小表示就餐人数的多少
    sizes=(1, 300),  # 设置点的波动范围
    palette=["red", "blue"],  # 设置点的颜色
)
<seaborn.axisgrid.FacetGrid at 0x295b1c3e3f0>

在这里插入图片描述

1.4 直方图

  • displot(kind=‘hist’): figure-level
  • hisplot: axes-level
sns.displot(
    data=penguins,
    x="企鹅的种类",  # 设定X轴的变量,鳍长(毫米)
    # y="鳍长 (毫米)",# 设定y轴变量,如果是直方图则建议只设置一个xony,会修改显示的方向
    kind="hist",  # 设定图表的类型为hist
    bins=10,  # 设定分箱子的数量,可以指定数目,也可以设定短点[160,180,200,220,240]
    discrete=True,  #相当于条形图,适用于离散数据
    binwidth=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值