5-5 Seaborn库FacetGrid结构图

Seaborn库FacetGrid结构图

Seaborn

是基于 Matplotlib 的图形可视化库。该库提前定义好了一套自己的风格,也封装了一系列的方便的绘图函数,之前通过 matplotlib 需要很多代码才能完成的绘图,使用 seaborn 可能就是一行代码的事情。总结一句话:使用 seaborn 绘图比 matplotlib 更美观、简单。

  1. FacetGrid结构图

FacetGrid 可以通过 colrow 等参数来一次性构建多个图形。
relplot 、catplot 、lmplot 等函数可以通过 col 、row 等在一个 Figure 中绘制多个图。这个函数之所以有这些功能,是因为函数底层使用了 FacetGrid 来组装这些图形。
FacetGrid 绘图的 x 和 y 参数必须为 DataFrame 的列的名字。而直接使用 Axes 绘图,参数更灵活。

5.1 普通的 Axes 绘图

实际上 Seaborn 的绘图函数中也有大量的直接使用 Axes 进行绘图的, 凡是函数名中已经明确显示了这个图的类型,这种图都是使用 Axes 绘图的。比如 sns. scatterplot 、sns. lineplot 、 sns. barplot 等。 Axes 绘图可以直接使用之前的 matplotlib 的一些方式设置图的元素。

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

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

axes = sns.scatterplot(x="total_bill",y="tip",data=tips)

axes.set_xticks(range(0,60,5))

5-5 Seaborn库FacetGrid结构图
fig,[ax1,ax2] = plt.subplots(1,2,figsize=(20,5))

sns.scatterplot(x="total_bill",y="tip",data=tips,ax=ax1)

sns.barplot(x="day",y="total_bill",data=tips,ax=ax2)

5-5 Seaborn库FacetGrid结构图

sns.scatterplot(x=tips['total_bill'],y='tip',data=tips)

5-5 Seaborn库FacetGrid结构图

5.2 FacetGrid 基本使用

先创建一个 FacetGrid 对象,然后再调用这个对象的 map 方法。其中 map 为方法的第一个参数是一个函数,后续 map 将调用这个函数来绘制图形。后面的参数就是传给这个函数的参数。
其中第一个参数是可以绘制 Axes 图,并且可以接受 color 参数的函数。可以取的值如下:

参数描述对应使用了 FacetGrid 函数plt.plot / sns.lineplot绘制折线图sns.relplot(kind=”line”)plt.hexbin绘制六边形图形sns.jointplot(kind=”hex”)plt.hist绘制直方图sns.distplotplt.scatter / sns.scatterplot绘制散点图sns.relplot(kind=”scatter”)sns.stripplot绘制分类散点图sns.catplot(kind=”strip”sns.swarmplot绘制散开来的分类散点图sns.catplot(kind=”swarm”)sns.boxplot绘制箱线图sns.catplot(kind=”box”)sns.violinplot绘制小提琴图sns.catplot(kind=”violin”)sns.pointplot绘制点线图sns.catplot(kind=”point”)sns.barplot绘制条形图sns.catplot(kind=”bar”)sns.countplot绘制数量柱状图sns.catplot(kind=”count”)sns.regplot绘制带有回归线的散点图sns.lmplot

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

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

g1 = sns.FacetGrid(tips)
g1.map(plt.scatter,"total_bill","tip")

5-5 Seaborn库FacetGrid结构图

5.3 绘制多个图形

FacetGrid 可以通过 colrow 参数在一个 Figure 上绘制多个图形,其中 col 和 row 都是数据集中的某个列的名字。只要指定这个名字,那么就会自动的按照指定列的值的个数绘制指定个数的图形。


g2 = sns.FacetGrid(tips,col="day",col_wrap=2)
g2.map(plt.scatter,"total_bill","tip")

5-5 Seaborn库FacetGrid结构图

5.4 添加颜色观察字段

可以通过添加 hue 参数来控制每个图中元素的颜色来观察其他的字段

g2 = sns.FacetGrid(tips,col="day",hue="time")
g2.map(plt.scatter,"total_bill","tip")

g2.add_legend()

5-5 Seaborn库FacetGrid结构图

5.5 设置每个图形的尺寸

使用 FacetGrid 绘制出图形后,如果设置每个图形的尺寸或者是宽高比,可以通过在 FacetGrid 中设置 heightaspect 来实现,其中 height 表示的是每个图形的尺寸(默认是宽高一致),aspect 表示的是 宽度/高度 的比例。

g3 = sns.FacetGrid(tips,col="smoker",height=4,aspect=1.5)
g3.map(sns.barplot,"day","total_bill")

5-5 Seaborn库FacetGrid结构图

5.6 设置图例

默认情况下不会添加图例,我们可以通过 g.add_legend() 来添加图例。
(1)通过 title 来控制图例的标题
(2)通过 label_order 来控制图例元素的顺序

sns.set(rc={"font.sans-serif":"SimHei"})
g2 = sns.FacetGrid(tips,col="day",hue="time")
g2.map(plt.scatter,"total_bill","tip")

g2.add_legend(title="标题",label_order=['Lunch','Dinner'])
new_labels = ['午餐','晚餐']
for text,label in zip(g2._legend.texts,new_labels):
    text.set_text(label)

5-5 Seaborn库FacetGrid结构图

5.7 设置标题

设置标题可以通过 g. set_titles(template=None,row_template=None,col_template=None) 来实现,这三个参数分别代表的意义如下:
(1) template:给图设置标题,其中有 { row_var}:绘制每行图像的名称,{ row_name}:绘制每行图像的值,{ col_var}:绘制每列图像的名称,{ col_name}:绘制每列图像的值
(2) col_template:给图像设置列的标题,其中有 { col_var} 以及 { col_name} 可以使用
(3) row_template:给图像设置行的标题,其中有 { row_var} 以及 { row_name} 可以使用

g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.regplot,"total_bill","tip")

g.set_titles(template="{col_var}/{col_name}标题")

5-5 Seaborn库FacetGrid结构图

5.8 设置坐标轴

  1. g.set_axis_labels(x_var,y_var):一次性设置 x 和 y 的坐标的标题
  2. g.set_xlabels(label):设置 x 轴的标题
  3. g.set_ylabels(label):设置 y 轴的标题
  4. g.set(xticks,yticks):设置 x 和 y 轴的刻度
  5. g.set_xticklables(labels):设置 x 轴的刻度文字
  6. g.set_yticklabels(labels):设置 y 轴的刻度文字
g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.scatterplot,"total_bill","tip")

g.set_axis_labels('消费金额','小费')
g.set(facecolor='y')

g.set(xticks=range(0,50,5),xticklabels=["$%d"%x for x in range(0,50,5)])

5-5 Seaborn库FacetGrid结构图

5.9 g.set 方法

g.set 方法可以对 FacetGrid 下的每个子图 Axes 设置属性。其中可以设置的参数完全是根据 Axes 的属性来的。比如可以设置每个 Axes 的 facecolor 等。详情可查询 matplotlib.Axes官方文档

g.set(facecolor='y')

g.set(xticks=range(0,50,5),xticklabels=["$%d"%x for x in range(0,50,5)])

5.10 g.fig 方法

通过 g.fig 可以获取到当前的 Figure 对象,然后通过 Figure 对象再可以设置其他属性,比如 dip 等。

g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.scatterplot,"total_bill","tip")

g.fig.set_dpi(100)

Original: https://blog.csdn.net/zkx990121/article/details/122077587
Author: 刚入门的小仙女
Title: 5-5 Seaborn库FacetGrid结构图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/695334/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球