CodeCollection2018
11/3/2018 - 2:17 PM

Seaborn可视化工具用法

Seaborn可视化工具用法

Seaborn能够满足大多数绘图要求,而需要精细具体的绘图还是需要借助matplotlib,两者互为补充而非代替。
绘制图形之前可以通过seaborn.set()来设置总体的样式
-------------------------------------------------------
_, ax = plt.subplots(figsize=(3, 4))
sns.boxplot(data=df, ax=ax);
sns绘制pandas的DataFrame一个属性列的箱线图
sns.boxplot(x="Species", y="PetalLengthCm", data=iris)
根据x和y绘制对应的boxplot
ax = sns.stripplot(x="Species", y="PetalLengthCm", data=iris, jitter=True, edgecolor="gray")
在boxplot中添加散点图
----------------------------------------------------------
_, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))
sns.countplot(x='Churn', data=df, ax=axes[0]);
sns.countplot(x='Customer service calls', data=df, ax=axes[1]);
频率表条形图
直方图用于查看数值变量的分布,而条形图用于类别特征。
直方图的X轴是数值;条形图的X轴可能是任何类型:数字、字符串、布尔值。
直方图的X轴是一根笛卡尔坐标轴;条形的顺序没有事先定义。不过,值得注意的是,条形经常按照高度排序,也就是值的频率。
------------------------------------------------------------
corr_matrix = df.corr()
sns.heatmap(corr_matrix);
相关性矩阵图,保证df的各列都是numerical数值型的数据。通过相关性矩阵图,如果两个属性之间的相关性是1,则可以只保留其中一个属性
---------------------------------------------------------------
sns.jointplot(x='Total day minutes', y='Total night minutes',data=df, kind='scatter');
绘制两个属性的散点图,同时在两侧绘制每个变量的直方图
 g = sns.jointplot("total_bill", "tip", data=tips, kind="reg")
再加上回归拟合的曲线核直方图密度曲线
g = sns.jointplot("sepal_width", "petal_length", data=iris,kind="kde", space=0, color="g")
以kde密度图形式绘制
----------------------------------------------------------------
sns.pairplot(df);
绘制散点图矩阵,就是每个变量之间的散点图绘制成矩阵
g = sns.pairplot(iris.drop("Id", axis=1), hue="species", markers=["o", "s", "D"])#对角线为直方图
sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde")#对角线为密度曲线图
g = sns.pairplot(iris, vars=["sepal_width", "sepal_length"])#只画两个属性之间的散点图矩阵
sns.pariplot()通过kind设置散点图或回归图,通过diag_kind设置对角线的图形是直方图或密度图kde
-------------------------------------------------------------------
ax = sns.violinplot(x=df["total_bill"])
ax = sns.violinplot(x="day", y="total_bill", data=tips)
小提琴图。小提琴图其实是箱线图与核密度图的结合,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须。外部形状即为核密度估计
---------------------------------------------------------------------
ax = sns.barplot(x="day", y="total_bill", data=tips,ci=0)
ax = sns.barplot(x="day", y="total_bill", hue="sex", data=tips,ci=0)
直方图,两个属性之间或三个属性之间的关系
--------------------------------------------------------------------
ax = sns.countplot(x="class", data=titanic)
计数统计图,统计某个属性的值得频度
ax = sns.countplot(x="class", hue="who", data=titanic)
考虑另一个属性得影响
--------------------------------------------------------------------
# 用小提琴图 反应 time-pulse 两变量的分布情形
import seaborn as sns
sns.set(style="ticks")
exercise = sns.load_dataset("exercise")
g = sns.factorplot(x="time", y="pulse", hue="kind",data=exercise, kind="violin")
变量联合绘图
-----------------------------------------------------------------------
回归图,sns得回归图将两个变量的散点图和回归曲线画在一张图中。有两种函数
g = sns.lmplot(x="total_bill", y="tip", data=tips,markers=["o", "x"])
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips,markers=["o", "x"])
g = sns.lmplot(x="total_bill", y="tip", col="smoker", data=tips)

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

# x-y 的散点图,不画回归线,fit_reg=False
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", data=tips,it_reg=False,hue='smoker',scatter=True)
# 只画回归线,不画散点图,scatter=False
g = sns.lmplot(x="total_bill", y="tip", data=tips,fit_reg=True,hue='smoker',scatter=False)

-------------------------------------------------------------------------
ax = sns.distplot(x, rug=True, hist=False)
ax = sns.distplot(x, rug=True, hist=True)
绘制直方图和密度曲线
------------------------------------------------------------------------
核密度图
ax = sns.kdeplot(x)  #单变量的kde
ax = sns.kdeplot(x, y, shade=True)  #多变量的kde,就是等高线图
sns.FacetGrid(iris, hue="column_name", size=6).map(sns.kdeplot, "x").add_legend()另一种单变量方法
------------------------------------------------------------------------
ax = sns.heatmap(df, annot=True, fmt="d")
热力图,并把数字写到每个方格中。
-------------------------------------------------------
ax = sns.tsplot(data=df)  #绘制简单的时序图
# 绘制不同的置信度拟合图,这个好用
ax = sns.tsplot(data=data, ci=[68, 95], color="m")
https://blog.csdn.net/suzyu12345/article/details/69029106  讲解

http://seaborn.pydata.org/tutorial.html  官方教程
sns.FacetGrid(iris, hue="column_name", size=5).map(plt.scatter, "x", "y").add_legend()绘制x与y的散点图,采用hue指定的列属性来区分点的颜色。