Seaborn - 变量分析绘图(四)

首先导入工具包并执行魔法指令:

import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot as plt

sns.set(style="ticks")

%matplotlib inline

导入今天使用的数据集 tips :

tips = sns.load_dataset("tips")
tips.head()

数据集如下:

今天我们介绍的工具是 FacetGrid ,可将变量不同类型的值绘制在多个子图中。

g = sns.FacetGrid(tips, col="time")

将会根据 tips 数据集中 time 的类型,创建 n 列子图:

使用 g.map 即可在各子图上绘制指定图形。

g.map(plt.hist, "tip")

在各个子图上绘制小费 tip 分布的直方图:

在创建子图时,使用 hue 关键字参数可以指定每张子图在绘制时,是否需要按指定的特征分不同颜色绘制:

g = sns.FacetGrid(tips, col="sex", hue="smoker")
g.map(plt.scatter, "total_bill", "tip", alpha=0.7)
g.add_legend()

在分别描述男性和女性 total_billtip 关系的时候,还会按照是否吸烟,将散点图按不同颜色区分:

创建子图时,除了指定行的分类,还可以指定类的分类:

g = sns.FacetGrid(tips, row="smoker", col="time", margin_titles=True)
g.map(sns.regplot, "size", "total_bill", fit_reg=True, x_jitter=0.2)

下面是 sizetotal_bill 的线性回归分析绘图,关于 sns.regplot 的控制参数,都可以在 g.map 中传入。

在创建子图时,可以使用 height 以及宽高比 aspect 控制每张子图的大小:

g = sns.FacetGrid(tips, col="day", height=4, aspect=0.5)
g.map(sns.barplot, "sex", "total_bill", order=tips.sex.value_counts().index)

绘制柱形图 sns.barplot 需要指定 order ,即柱子的顺序:

>>> tips.sex.value_counts()
Male      157
Female     87
Name: sex, dtype: int64

绘制结果:每张子图中,Male 在前,Female 在后:

此外,还可以指定子图的顺序,使用关键字参数 row_order 或者 col_order 即可。

比如,我们需要以子图的形式显示每天消费总额 total_bill 分布的直方图。我们先看看数据集提供了一周中那些天的数据:

>>> tips.day.value_counts()
Sat     87
Sun     76
Thur    62
Fri     19
Name: day, dtype: int64

下面,我们横着创建 4 张子图进行绘制:

from pandas import Categorical

ordered_days = Categorical(['Thur', 'Fri', 'Sat', 'Sun'])
g = sns.FacetGrid(tips, row="day", row_order=ordered_days, height=1.7, aspect=2)
g.map(sns.histplot, "total_bill")

绘制结果:

创建 FaceGrid 时可以指定使用的调色板:

pal = dict(Lunch="seagreen", Dinner="red")
g = sns.FacetGrid(tips, hue="time", palette=pal, height=5, aspect=1.2)
g.map(plt.scatter, "total_bill", "tip", s=50, alpha=0.6, linewidth=0.5, edgecolor="white")
g.add_legend()

绘制结果:

还可以指定 marker

g = sns.FacetGrid(
    tips, hue="sex", 
    palette=sns.hls_palette(2, l=0.7, s=0.9), 
    hue_kws={"marker": ["^", "v"]},
    height=5,
    aspect=1.2
)
g.map(plt.scatter, "total_bill", "tip", s=100, linewidth=0.5, edgecolor="white")
g.add_legend()

绘制结果:

使用 g 对象,可以对子图的坐标轴名称,刻度,子图间的距离等进行设定:

with sns.axes_style("white"):
    g = sns.FacetGrid(tips, row="sex", col="smoker", margin_titles=True, height=2.5)

g.map(plt.scatter, "total_bill", "tip", color="#334488", edgecolor="white", lw=0.5);
g.set_axis_labels("Total bill (US Dollars)", "Tip")
g.set(xticks=[10, 30, 50], yticks=[2, 6, 10])
g.fig.subplots_adjust(wspace=0.2, hspace=0.1)

绘制结果:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容