添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
axesSub = sns.boxplot(x='species', y='sepal_length', data=iris)
axesSub = sns.stripplot(x='species', y='sepal_length', data=iris, ax=axesSub)  # ax=axesSub,指定坐标性, 在之前箱型图基础上,继续绘制条带图
axesSub = sns.lineplot(x='species', y='sepal_length', data=iris, ax=axesSub)  # ax=axesSub,指定坐标性, 在之前箱型图基础上,继续绘制折线图
fig, ax =plt.subplots(1,3,constrained_layout=True, figsize=(12, 3))
axesSub = sns.boxplot(x="species", y="sepal_length", data=iris, ax=ax[0])
axesSub.set_title('boxplot')
axesSub = sns.stripplot(x="species", y="sepal_length", data=iris, ax=ax[1])
axesSub.set_title('stripplot')
axesSub = sns.histplot(x="sepal_length", data=iris, ax=ax[2])
_ = axesSub.set_title('histplot')
  • hue:将绘图的不同面映射为不同的颜色
  • hue_order:字符串组成的list,设置hue后设置各颜色顺序
  • hue_kws:要插入到绘图调用中的其他关键字参数,以使其他绘图属性在色调变量的不同级别(例如散点图中的标记)之间变化。例如按颜色使用不同标记,hue_kws={"marker": ["o", "s", "D"]}
  • palette:调色板
  • vars: 同时指定x轴、y轴绘图字段,否则使用所有数值型字段
  • x_vars:指定x轴绘图字段
  • y_vars:指定y轴绘图字段
  • height标量,可选,每个刻面的高度(以英寸为单位)
  • aspect:标量,可选,aspect 和 height 的乘积得出每个刻面的宽度(以英寸为单位)
  • despine:布尔值,可选,从图中移除顶部和右侧外边框。
  • dropna:布尔值,可选,在绘图之前删除数据中的缺失值。
  • 3.1 map方法:指定绘图方法

    PairGrid所有参数中,只有data是必传参数,实例化时,seaborn会根据传入数据集的各个字段情况,绘制n行n列个坐标系,但仅限于绘制坐标系,坐标系中并未有任何图像,后续需通过调用map方法指定绘图方法后才会完成绘图。注意,在map方法文档中明确说明,此方法的作用是用同一方法在所有子图进行绘图,所以PairGird类绘图的所有子图,都是同类图表。

    PairGrid类实例化时,只传递data参数,则绘制所有字段的子图,继续通过map方法传递sns.scatterplot作为绘图方法绘制散点图,当然,也可以传入其他绘图方法,绘制其他图形。在对角线上的图形,由于x轴和y轴都是同一字段,所以图形呈45度角直线,但并无实际意义。

    g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"],height=1.5)
    g = g.map(sns.scatterplot)
    

    3.4 g.map_diag()和g.map_offdiag():指定对角线和非对角线的绘图方法

    g.map_diag()和g.map_offdiag()是与g.map类似的方法,区别在于g.map_diag()用于指定对角线上子图绘图方法,g.map_offdiag()用于指定非对角线上绘图方法,而g.map一次性指定所有子图绘图方法。

    例如,非对角线绘制散点图,对角线上绘制直方图,可以这么做:

    g = sns.PairGrid(iris, hue="species")
    g.map_diag(sns.histplot)  #指定对角线绘制直方图
    g = g.map_upper(sns.scatterplot)  # 指定上三角绘制散点图
    g = g.map_lower(sns.kdeplot)  # 指定下三角绘制核密度图
    
  • row, col, hue:定义数据子集的变量,这些数据将绘制在网格中的不同面上。row(行)纵向,col(列)横向,hue:颜色
  • col_wrap:每行最多显示子图个数
  • height标量,可选,每个刻面的高度(以英寸为单位)
  • aspect:标量,可选,aspect 和 height 的乘积得出每个刻面的宽度(以英寸为单位)
  • despine:布尔值,可选,从图中移除顶部和右侧外边框。
  • dropna:布尔值,可选,在绘图之前删除数据中的缺失值。
  • palette:颜色面板
  • row_order:字段显示顺序
  • col_order:字段显示顺序
  • hue_order:字段显示顺序
  • hue_kws:要插入到绘图调用中的其他关键字参数,以使其他绘图属性在色调变量的不同级别(例如散点图中的标记)之间变化。例如按颜色使用不同标记,hue_kws={"marker": ["o", "s", "D"]}
  • g = sns.FacetGrid(tips, col="sex", hue="smoker")
    g.map(sns.scatterplot, "total_bill", "tip")
    g = g.add_legend()
    
    g = sns.FacetGrid(tips, col="size", hue="smoker", col_wrap=4)  # 每行最多显示4个子图,所以分两行显示了,第二行2个子图
    g.map(sns.scatterplot, "total_bill", "tip")
    g = g.add_legend()
    
    g = sns.FacetGrid(tips, col="time", margin_titles=True)
    g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
    g.refline(y=tips["tip"].median())
        n = len(data)
        ax = plt.gca()
        ax.text(.1, .6, f"N = {n}", transform=ax.transAxes)
    g = sns.FacetGrid(tips, col="time")
    g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
    g.map_dataframe(annotate)