3 分类变量的绘图

散点图在分类变量中不能使用,本章将讨论分类变量的显示方法。seaborn将分类变量的显示函数分成了三类:每个级别分类变量的观察,观察变量的抽象表示,统计估计表示。

  • 第一类使用函数swarmplot和stripplot
  • 第二类使用boxplot和violinplot
  • 第三类使用countplot和pointplot

分类变量的关联也有两种显示方式:

  • regplot和lmplot 的低级关联显示方式
  • factorplot和FacetGrid 高级关联显示方式

首先导入库和数据

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid", color_codes=True)
np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")

分类变量散点图

显示分类变量的散点图,最简单的函数是stripplot

sns.stripplot(x="day", y="total_bill", data=tips);
stripplot

我们发现每个分类中点都重合了,有点看不清楚,可以使用jitter来调整一下偏差

sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);
jitter

虽然散开了,但是由于比较密集,依然有重叠。swarmplot使用专用算法保证不重叠。

sns.swarmplot(x='day', y='total_bill', data=tips)
swarmplot

点不拥堵在一起了,开枝散叶了,这时我么还可以加入另一个分类

sns.swarmplot(x='day', y='total_bill', hue='sex', data=tips)
hue

分类变量分布图

一般来说散点图提供的信息有限,有时候我们需要分类变量的分布图,提供不同分类之间总体信息的比较。

箱线图

箱线图给出了4分位的值,极值,中位数等信息,较好的描述了离散变量的信息

sns.boxplot(x='day', y='total_bill', data=tips)
boxplot
琴音图

有时候我们需要核密度分布图,violinplot是个选择

sns.violinplot(x='day', y='total_bill', hue='sex', data=tips, split=True)
violinplot

swarmplot,violinplot,boxplot,stripplot个和函数可以混合使用

sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5);
mix

分类变量的统计估计

除了显示分布,还可以显示中心趋势,seaborn有两个基本的API,barplot,countplot

sns.barplot(x="sex", y="survived", hue="class", data=titanic)
barplot
sns.countplot(x="deck", data=titanic, palette="Greens_d");
contplot

多面板的分类变量图

两种方法添加面板 factorplot或者|FacetGrid

sns.factorplot(x="day", y="total_bill", hue="smoker",
               col="time", data=tips, kind="swarm");
factorplot
sns.factorplot(x="time", y="total_bill", hue="smoker",
               col="day", data=tips, kind="box", size=4, aspect=.5);
factorplot
g = sns.PairGrid(tips,
                 x_vars=["smoker", "time", "sex"],
                 y_vars=["total_bill", "tip"],
                 aspect=.75, size=3.5)
g.map(sns.violinplot, palette="pastel");
PairGrid

你可能感兴趣的:(3 分类变量的绘图)