%matplotlib inline
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") #导入鸢尾花数据集
sns.stripplot(x="day", y="total_bill", data=tips)
问题:有重叠,无法看见数据的密度。
jitter
抖动抖动是平时可视化中的常用的观察“密度”的方法,除了使用参数抖动,特定的抖动需求也可以用numpy在数据上处理实现
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True) # jitter抖动
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a3216a0>
swarmplot()
函数sns.swarmplot(x="day", y="total_bill", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d87f3b128>
sns.swarmplot(x="day", y="total_bill", hue="sex",data=tips) #hue 参数控制分组绘图
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a428860>
箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。
如上图所示,标示了图中每条线表示的含义,其中应用到了分位值(数)的概念。 主要包含六个数据节点,将一组数据从大到小排列,分别计算出他的上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值。
举例说明,以下是箱形图的具体例子:
这组数据显示出:
sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8bbd7240>
seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)
sns.violinplot(x="total_bill", y="day", hue="time", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a9f97b8>
sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True) #split: bool, optional #琴形图是否从中间分开两部分
显示值的集中趋势可以用条形图
sns.barplot(x="sex", y="survived", hue="class", data=titanic)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a5bc358>
点图可以更好的描述变化差异
sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a5bcda0>
#详细指定属性值
sns.pointplot(x="class", y="survived", hue="sex", data=titanic,
palette={"male": "g", "female": "m"}, # 指定颜色
markers=["^", "o"], # 指定点样式
linestyles=["-", "--"]); # 指定线型样式
#琴型图 + 分散点图
sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a3f4908>
factorplot()
函数是对各种图形的一个更高级别的API封装,在Seaborn中非常常用。
seaborn.factorplot(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='point', size=4, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)
参数说明:
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips) #默认是点图
<seaborn.axisgrid.FacetGrid at 0x22d8a79def0>
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar") #绘制条形图
<seaborn.axisgrid.FacetGrid at 0x22d8a648748>
sns.factorplot(x="day", y="total_bill", hue="smoker",
col="time", data=tips, kind="swarm") #绘制分散点图
<seaborn.axisgrid.FacetGrid at 0x22d8a867be0>
sns.factorplot(x="time", y="total_bill", hue="smoker",
col="day", data=tips, kind="box", size=4, aspect=.5) #绘制箱型图
<seaborn.axisgrid.FacetGrid at 0x22d8a8bcb00>
[Style functions]http://seaborn.pydata.org/tutorial/aesthetics.html#aesthetics-tutorial
[Color palettes]http://seaborn.pydata.org/tutorial/color_palettes.html#palette-tutorial
[Distribution plots]http://seaborn.pydata.org/tutorial/distributions.html#distribution-tutorial
[Categorical plots]http://seaborn.pydata.org/tutorial/categorical.html#categorical-tutorial
[Regression plots]http://seaborn.pydata.org/tutorial/regression.html#regression-tutorial
[Axis grid objects]http://seaborn.pydata.org/tutorial/axis_grids.html#grid-tutorial
[10分钟python图表绘制]https://zhuanlan.zhihu.com/p/24464836