写了matplotlib之后,懒劲复发,不想提笔,蹉跎了多日,今天痛定思痛,下定决心写seaborn,毕竟是很常用的一个包~
- 目录:
matplotlib 学习笔记(1): figure
matplotlib 学习笔记(2):plot
matplotlib 学习笔记(3): subplot and subplots
matplotlib 学习笔记(4):ion 和 ioff
matplotlib 学习笔记(5):scatter
seaborn 简单使用
下文主要简单介绍 distplot、boxplot、violinplot、countplot 以及 heatmap 的用法。
Distplot
def distplot(data, bins=None, hist=True, kde=True, rug=False, fit=None,
hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,
color=None, vertical=False, norm_hist=False, axlabel=None,
label=None, ax=None):
- data:需要绘制的数据。可以是Series对象,一维矩阵或列表。如果是Series对象,则
axlabel
的值会被设置为Series 的名字。 - bins:柱状图参数,要绘制的条形柱数目。
- hist:是否要绘制柱状图。
- kde:核密度估计(kernel density estimate),是否要绘制密度曲线。
- rug:控制是否生成观测数值的小细条。
- norm_hist:如果为True,则直方图纵坐标显示密度而非计数(含有kde图像中默认为True)
- axlabel:x轴的标签。
- label:legend标签。
- ax:如果提供了的话,就在这个axis上面画图。
import matplotlib.pyplot as plt
import seaborn as sns
x=np.random.randn(100)
sns.distplot(x,axlabel='axlabel',label='label')
plt.legend()
plt.show()
图片如下所示:
distplot
Boxplot
箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。它能显示出一组数据的最大值、最小值、中位数及上下四分位数。因形状如箱子而得名。
seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None,
hue_order=None, orient=None, color=None, palette=None,
saturation=0.75, width=0.8, dodge=True, fliersize=5,
linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
- x:横轴,可以是列名(如果data是DataFrame的话)或数据。
- y:纵轴,可以是列名(如果data是DataFrame的话)或数据。
- data: DataFrame,数组或者列表类型的数组。
- orient : “v” | “h”,控制绘图方向。
import matplotlib.pyplot as plt
import seaborn as sns
x=np.random.randn(100,3)*3
df = pd.DataFrame(x,columns=['a','b','c'])
df['label'] = df['a'] // 3
sns.boxplot(x='label',y='a',data=df)
plt.show()
上面绘制了 df['label'] 和 df['a'] 之间关系的箱型图(两者大约为3倍关系)。效果如下:
boxplot
import matplotlib.pyplot as plt
import seaborn as sns
x=np.random.randn(100,3)*3
df = pd.DataFrame(x,columns=['a','b','c'])
sns.boxplot(data=df)
plt.show()
这个代码则是分别绘制了 df 中,每列各自的箱型图,效果如下:
boxplot
Violinplot
violinplot与boxplot扮演类似的角色,它显示了定量数据在一个(或多个)分类变量的多个层次上的分布,这些分布可以进行比较。不像箱形图中所有绘图组件都对应于实际数据点,小提琴绘图以基础分布的核密度估计为特征。
iolinplot(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, dodge=True,
linewidth=None, color=None, palette=None, ax=None, **kwargs)
栗子如下:
import matplotlib.pyplot as plt
import seaborn as sns
x=np.random.randn(100,3)*3
df = pd.DataFrame(x,columns=['a','b','c'])
sns.violinplot(data=df)
plt.show()
结果如下图:
violinplot
Countplot
countplot 主要用来统计数目,函数如下:
seaborn.countplot(x=None, y=None, hue=None, data=None, order=None,
hue_order=None, orient=None, color=None, palette=None, saturation=0.75,
dodge=True, ax=None, **kwargs)
简单举一个例子:
x=np.random.randint(1,10,(100,))
df = pd.DataFrame(x,columns=['a'])
sns.countplot(x='a',data=df)
plt.show()
结果如下:
countplot
Heatmap
热图也是常用的数据分析工具,一般会配合相关系数的计算(说白了就是将计算的相关系数矩阵用热图展示出来)。
heatmap(data, vmin=None, vmax=None, cmap=None, center=None,
annot=None, fmt=".2g", annot_kws=None,
linewidths=0, linecolor="white",
square=False, xticklabels="auto", yticklabels="auto",
mask=None, ax=None, **kwargs):
- data:你所要展示的数据。
- vmin:右侧坐标最小值。
- vmax:右侧坐标最大值。
- cmap: 你所使用的颜色图(color map)。
- annot:是否在每个格子中显示数值。
- linewidths: 每个格子之间的线宽。
- linecolor: 每个格子之间线的颜色。
- square:格子是否为正方形。
实例如下:
x=np.random.randn(50,5)
df = pd.DataFrame(x)
sns.heatmap(data=df.corr(),linewidths=0.1,linecolor='white',vmax=1.0,
square=True, annot=True, cmap="RdBu")
plt.show()
结果如下:
heatmap
好,就先到此为止吧~
网友评论