Python 数据分析之seaborn.FacetGrid


参考链接

参数介绍

class seaborn.FacetGrid(data, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=True, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None, size=None)
在这里插入图片描述

1.例子

1.1 使用提示数据集初始化2x2的构面网格:

import seaborn as sns; sns.set(style="ticks", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="time", row="smoker")

在这里插入图片描述

1.2 在每个子图绘制一个单变量图:

import matplotlib.pyplot as plt
g = sns.FacetGrid(tips, col="time",  row="smoker")
g = g.map(plt.hist, "total_bill")


(请注意,不必重新捕获返回的变量;它是同一对象,但是在示例中这样做会使处理doctest的烦恼有所减少)。

1.3 将其他关键字参数传递给映射函数:

import numpy as np
bins = np.arange(0, 65, 5)
g = sns.FacetGrid(tips, col="time",  row="smoker")
g = g.map(plt.hist, "total_bill", bins=bins, color="r")

在这里插入图片描述

1.4 在每个方面上绘制一个双变量函数:

g = sns.FacetGrid(tips, col="time",  row="smoker")
g = g.map(plt.scatter, "total_bill", "tip", edgecolor="w")

在这里插入图片描述

1.5 将变量之一分配给绘图元素的颜色:

g = sns.FacetGrid(tips, col="time",  hue="smoker")
g = (g.map(plt.scatter, "total_bill", "tip", edgecolor="w")
      .add_legend())

在这里插入图片描述

1.6 更改facet的高度和长宽比:

g = sns.FacetGrid(tips, col="day", height=4, aspect=.5)
g = g.map(plt.hist, "total_bill", bins=bins)

在这里插入图片描述

1.7 指定绘图元素的顺序:

g = sns.FacetGrid(tips, col="smoker", col_order=["Yes", "No"])
g = g.map(plt.hist, "total_bill", bins=bins, color="m")

在这里插入图片描述

1.8 使用其他调色板:

kws = dict(s=50, linewidth=.5, edgecolor="w")
g = sns.FacetGrid(tips, col="sex", hue="time", palette="Set1",
                  hue_order=["Dinner", "Lunch"])
g = (g.map(plt.scatter, "total_bill", "tip", **kws)
     .add_legend())

在这里插入图片描述

1.9 使用字典将色调级别映射到颜色:

pal = dict(Lunch="seagreen", Dinner="gray")
g = sns.FacetGrid(tips, col="sex", hue="time", palette=pal,
                  hue_order=["Dinner", "Lunch"])
g = (g.map(plt.scatter, "total_bill", "tip", **kws)
     .add_legend())

在这里插入图片描述

1.10 另外,对色阶使用不同的标记:

g = sns.FacetGrid(tips, col="sex", hue="time", palette=pal,
                  hue_order=["Dinner", "Lunch"],
                  hue_kws=dict(marker=["^", "v"]))
g = (g.map(plt.scatter, "total_bill", "tip", **kws)
     .add_legend())

在这里插入图片描述

1.11 将具有多个级别的列变量“包装”到行中:

att = sns.load_dataset("attention")
g = sns.FacetGrid(att, col="subject", col_wrap=5, height=1.5)
g = g.map(plt.plot, "solutions", "score", marker=".")

在这里插入图片描述

1.12 定义一个自定义双变量函数以映射到网格:

from scipy import stats
def qqplot(x, y, **kwargs):
    _, xr = stats.probplot(x, fit=False)
    _, yr = stats.probplot(y, fit=False)
    sns.scatterplot(xr, yr, **kwargs)
g = sns.FacetGrid(tips, col="smoker", hue="sex")
g = (g.map(qqplot, "total_bill", "tip", **kws)
      .add_legend())

在这里插入图片描述

1.13 定义一个使用DataFrame对象并接受列名称作为位置变量的自定义函数:

import pandas as pd
df = pd.DataFrame(
    data=np.random.randn(90, 4),
    columns=pd.Series(list("ABCD"), name="walk"),
    index=pd.date_range("2015-01-01", "2015-03-31",
                        name="date"))
df = df.cumsum(axis=0).stack().reset_index(name="val")
def dateplot(x, y, **kwargs):
    ax = plt.gca()
    data = kwargs.pop("data")
    data.plot(x=x, y=y, ax=ax, grid=False, **kwargs)
g = sns.FacetGrid(df, col="walk", col_wrap=2, height=3.5)
g = g.map_dataframe(dateplot, "date", "val")

在这里插入图片描述

1.14 绘制后使用不同的轴标签:

g = sns.FacetGrid(tips, col="smoker", row="sex")
g = (g.map(plt.scatter, "total_bill", "tip", color="g", **kws)
      .set_axis_labels("Total bill (US Dollars)", "Tip"))

在这里插入图片描述

1.15 设置在子图之间共享的其他属性:

g = sns.FacetGrid(tips, col="smoker", row="sex")
g = (g.map(plt.scatter, "total_bill", "tip", color="r", **kws)
      .set(xlim=(0, 60), ylim=(0, 12),
           xticks=[10, 30, 50], yticks=[2, 6, 10]))

在这里插入图片描述

1.16 对构面标题使用其他模板:

g = sns.FacetGrid(tips, col="size", col_wrap=3)
g = (g.map(plt.hist, "tip", bins=np.arange(0, 13), color="c")
      .set_titles("{col_name} diners"))

在这里插入图片描述

1.17 收紧各个方面:

g = sns.FacetGrid(tips, col="smoker", row="sex",
                  margin_titles=True)
g = (g.map(plt.scatter, "total_bill", "tip", color="m", **kws)
      .set(xlim=(0, 60), ylim=(0, 12),
           xticks=[10, 30, 50], yticks=[2, 6, 10])
      .fig.subplots_adjust(wspace=.05, hspace=.05))

在这里插入图片描述

2.方法

项目说明
** _init _**(self, data[, row, col, hue, …])初始化matplotlib图形和FacetGrid对象。
add_legend(self[, legend_data, title, …])绘制图例,也许将其放置在轴外并调整图的大小。
despine(self, **kwargs)从刻面上除去轴刺。
facet_axis(self, row_i, col_j)使这些索引所标识的轴处于活动状态并返回。
facet_data(self)每个方面的名称索引和数据子集的生成器。
map(self, func, *args, **kwargs)将绘图函数应用于数据的每个方面。
map_dataframe(self, func, *args, **kwargs)像,.map但将args作为字符串传递,并将数据插入kwargs中。
savefig(self, *args, **kwargs)保存该图。
set(self, **kwargs)在每个子图轴上设置属性。
set_axis_labels(self[, x_var, y_var])在网格的左列和底部行设置轴标签。
set_titles(self[, template, row_template, …])在每个构面上方或网格边距上绘制标题。
set_xlabels(self[, label])在网格的底行上标记x轴。
set_xticklabels(self[, labels, step])设置网格的x轴刻度标签。
set_ylabels(self[, label])在网格的左列上标记y轴。
set_yticklabels(self[, labels])在网格的左列上设置y轴刻度标签。

3.属性

名称说明
ax轻松访问单轴.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值