2020-12-03
数据分析
00

目录

可视化分类数据
条形图
绘制每组有多个分类的条形图
绘制水平条形图
控制条形顺序
不绘制误差条
分类散点图
线箱图
绘制嵌套分组的线箱图

可视化分类数据

可视化分类数据的统一FacetGrid图级接口为catplot()函数,通过kind参数,可以选择轴级函数有:

  • 分类散点图:
    • stripplot() (with kind="strip"; the default)
    • swarmplot() (with kind="swarm")
  • 分类分布图:
    • boxplot() (with kind="box")
    • violinplot() (with kind="violin")
    • boxenplot() (with kind="boxen")
  • 分类估计图:
    • pointplot() (with kind="point")
    • barplot() (with kind="bar")
    • countplot() (with kind="count")

条形图

绘制两种不同的条形图:

  • barplot() 或 catplot(kind='bar'):x为分类,y为该分类下的数据的估计值;需要给x、y赋值。
  • countplot() 或 catplot(kind='count'):x为分类,y为该分类下的数据的数量;只需给x赋值。

两种图形的其他参数使用方法一致。

python
import seaborn as sns import pandas as pd %matplotlib inline # 加载seaborn配制,覆盖matplotlib默认配制 sns.set() tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips)
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
... ... ... ... ... ... ... ...
239 29.03 5.92 Male No Sat Dinner 3
240 27.18 2.00 Female Yes Sat Dinner 2
241 22.67 2.00 Male Yes Sat Dinner 2
242 17.82 1.75 Male No Sat Dinner 2
243 18.78 3.00 Female No Thur Dinner 2

244 rows × 7 columns

python
# y为数据的估值的条形图 ax = sns.barplot(x='day', y='total_bill', data=tips)

python
# y为数据的数量的条形图 ax = sns.countplot(x='day', data=tips)

绘制每组有多个分类的条形图

hue通过颜色控制每组分类数量,同样适用于其他类型分类数据图。

python
ax = sns.barplot(x='day', y='total_bill', hue='sex', data=tips)

绘制水平条形图

通过交换x、y变量,同样适用于其他类型分类数据图。

python
ax = sns.barplot(y='day', x='total_bill', hue='sex', data=tips)

控制条形顺序

order参数传入列表,指定条形顺序,同样适用于其他类型分类数据图。

python
ax = sns.barplot(x='day', y='total_bill', order=['Sat', 'Thur', 'Fri', 'Sun'], data=tips)

不绘制误差条

ci参数控制估计值的置信区间大小,取值:

  • 浮点数
  • 'sd'(标准差)
  • None,不绘制
python
ax = sns.barplot(x='day', y='total_bill', ci=None, data=tips)

分类散点图

可视化统计关系的散点图的x、y取值均为数值一一对应,而分类散点图x或y某一维表示分类(类别不能太多,否则绘出的图很大),另一维为每一类中分布的数值。

绘制两种不同的分类散点图:

  • stripplot() 或 catplot(kind='strip'):绘制的点元素可重叠;
  • swarmplot() 或 catplot(kind='swarm'):绘制的点元素不重叠;
python
# stripplot()绘制出的点有重叠 ax = sns.stripplot(x='day', y='total_bill', data=tips)

python
# swarmplot()绘制出的点不重叠 ax = sns.swarmplot(x='day', y='total_bill', data=tips)

线箱图

绘制方法:

  • catplot(kind='box')
  • boxplot()
python
ax = sns.boxplot(x='day', y='total_bill', data=tips)

绘制嵌套分组的线箱图

hue控制每一类的分组,如果该类只有一个分组则至绘制一个线箱图,如下图。

python
ax = sns.boxplot(x='day', y='total_bill', hue='time', data=tips)

本文作者:tsingk

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!