5. seaborn-构建结构化多图网络

在探索中等维度数据时,经常需要在数据集的不同子集上绘制同一类型图的多个实例,这种技术有时被称为“网格”绘图,可以从复杂数据中快速提取大量信息。Matplotlib 为此提供了很好的支持,seaborn 构建于此之上,可直接将绘图结构和数据集结构关系起来。

要使用网格图功能,数据必须是 Pandas 数据框的形式,且为整洁形式,即用来绘图的数据框应该为每列一个变量,每一行一个观察的形式。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

sns.set(style='whitegrid', color_codes=True)
plt.rc(
    "figure",
    autolayout=True,
    figsize=(6, 5),
    titlesize=18,
    titleweight='bold',
)
plt.rc(
    "axes",
    labelweight="bold",
    labelsize="large",
    titleweight="bold",
    titlesize=16,
    titlepad=10,
)
%config InlineBackend.figure_format = 'retina'
warnings.filterwarnings('ignore')

基于一定条件的多重小图

当我们想在数据集的不同子集中分别可视化变量分布或多个变量之间的关系时,就需要用到FacetGrid类,它最多有三个维度:rowcolhue。前两者与轴阵列对应;色调变量hue为第三个维度,不同级别采用不同的颜色绘制。

首先,使用数据框初始化FacetGrid对象并指定将形成网格的行、列或色调维度的变量名称。这些变量应是离散的,然后对应于变量不同取值的数据将用于绘制沿该轴的不同小平面。relplot()catplot()lmplot()都在内部使用此对象,并且它们在完成时返回该对象,以便进一步调整。

tips = sns.load_dataset('tips', data_home='data', cache=True)
tips.head()
total_bill tip sex smoker day time size
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
g = sns.FacetGrid(tips, col='time')
g.map(plt.hist, 'tip')
<seaborn.axisgrid.FacetGrid at 0x1351587d0>

在这里插入图片描述

map函数绘制图形并注释轴,生成图。要绘制关系图,只需传递多个变量名称。还可以提供关键字参数,这些参数将传递给绘图函数。

g = sns.FacetGrid(tips, col='sex', hue='smoker')
g.map(plt.scatter, 'total_bill', 'tip', alpha
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值