数据可视化(4)-Seaborn系列 | 分类图catplot()
- 2019 年 10 月 4 日
- 筆記
本篇是《Seaborn系列》文章的第4篇-分类图。
分类图
分类图catplot()
解析:
catplot() 分类图(它是下面8种图的接口,下面八种图表均可通过指定kind参数来绘制)
1.stripplot() 分类散点图
2.swarmplot() 能够显示分布密度的分类散点图
3.boxplot() 箱图、盒形图
4.violinplot() 小提琴图
5.boxenplot() 增强箱图
6.pointplot() 点图
7.barplot() 条形图
8.countplot() 计数图
函数原型
seaborn.catplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='strip', height=5, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)
参数解读

必须的参数data 其他参数均为可选; data:是DataFrame类型的; x,y为数据中变量的名称(如上表,date,name,age,sex为数据字段变量名); row,col:数据中变量的名称 作用:设置分类变量将决定网格的分面。 kind:字符串 要绘制的绘图类型 (对应于分类绘图功能的名称:"count"-统计图, "point"-点, "bar"-条形, "strip"-条形, "swarm"-群形, "box"-框形, "violin"-小提琴形, or"boxen"-盒形.) col_wrap:int类型数值 作用:让每行显示指定数量的图,如果超过该数量,则多行显示。 orient:方向:v或者h 作用:设置图的绘制方向(垂直或水平) 如何选择:一般是根据输入变量的数据类型(dtype)推断出来。
案例教程
import seaborn as sns sns.set(style="ticks") exercise = sns.load_dataset("exercise") exercise[:5]

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 exercise = sns.load_dataset("exercise") """ 案例1:基本分类图 """ sns.catplot(x="time", y="pulse", hue="kind", data=exercise) plt.show()

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 exercise = sns.load_dataset("exercise") """ 案例2:通过设置kind来指定绘制的图类型 kind="violin" 则表示绘制小提琴图 """ sns.catplot(x="time", y="pulse", hue="kind",data=exercise, kind="violin") plt.show()

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 exercise = sns.load_dataset("exercise") """ 案例3:根据col分类,以列布局绘制多列图 设置col,根据指定的col的变量名,以列的形式显示(eg.col='diet',则在列的方向上显示,显示图的数量为diet列中对值去重后的数量) """ sns.catplot(x="time", y="pulse", hue="kind",col="diet", data=exercise) plt.show()

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 exercise = sns.load_dataset("exercise") """ 案例4:绘图时,设置图(facets)的高度和宽度比 """ sns.catplot(x="time", y="pulse", hue="kind",col="diet", data=exercise,height=4, aspect=.8) plt.show()

import seaborn as sns sns.set(style="ticks") # 使用 titanic数据集 titanic = sns.load_dataset("titanic") # 获取数据 #去掉deck这一列中值为空的数据 data=titanic[titanic.deck.notnull()] data[:10]

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 #去掉deck这一列中值为空的数据 data=titanic[titanic.deck.notnull()] """ 案例5:利用catplot()绘制柱状图 kind="count" 设置col_wrap一个数值,让图每行只显示数量为该数值的列,多余的另起一行显示 """ sns.catplot(x="alive", col="deck", col_wrap=4,data=data,kind="count", height=2.5, aspect=.8) plt.show()

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 获取数据 #去掉deck这一列中值为空的数据 data=titanic[titanic.deck.notnull()] # 水平绘图,并将其他关键字参数传递给绘图函数 """ 案例6:利用catplot()绘制小提琴图 kind="violin" orient设置图的方向 """ sns.catplot(x="age", y="embark_town",hue="sex", row="class", data=data, orient="h", height=2, aspect=3, palette="Set3", kind="violin",dodge=True, cut=0, bw=.2) plt.show()

案例地址
案例代码已上传:Githubhttps://github.com/Vambooo/SeabornCN
整理制作:数据分析与可视化学研社
