观测两个变量之间的分布关系 ------ 最好用散点图
两个便量间的分布关系:
1 # 生成一个多维正态分布的随机数,分别传入参数均值和协方差矩阵 2 mean, cov = [0, 1], [(1, .5), (.5, 1)] 3 data = np.random.multivariate_normal(mean, cov, 200) 4 df = pd.DataFrame(data, columns=["x", "y"]) 5 sns.jointplot(x="x", y="y", data=df) 6 # 在图中添加回归线 7 sns.jointplot(x="x", y="y", data=df, kind="reg") 8 plt.show()
运行结果:
用 “类蜂窝” 结构展示数据的分布:
1 x, y = np.random.multivariate_normal(mean, cov, 1000).T 2 with sns.axes_style("white"): 3 sns.jointplot(x=x, y=y, kind="hex", color="k") 4 plt.show()
运行结果:
多维数据间的分布关系
1 iris = sns.load_dataset("iris") 2 sns.pairplot(iris) 3 plt.show()
运行结果:
绘制回归关系
regplot()和lmplot()都可以绘制回归关系,推荐regplot()
1 tips = sns.load_dataset("tips") 2 print(tips.head()) 3 sns.regplot(x="total_bill", y="tip", data=tips) 4 sns.lmplot(x="total_bill", y="tip", data=tips) 5 plt.show()
运行结果:
用DataFrame数据画图
用 "dataset == 'I' " 的数据画图;用"dataset == 'II' " 的数据画图
1 anscombe = sns.load_dataset("anscombe") 2 print(anscombe.head()) 3 print(type(anscombe)) 4 # ci 置信区间 query 查询布尔表达式所在的数据; scatter_kws={"s": 80}设置点的大小 5 sns.regplot(x="x", y="y", data=anscombe.query("dataset == 'I'"), 6 ci=None, scatter_kws={"s": 80}) 7 # order=2 表示用二次多项式拟合 8 sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'II'"), 9 ci=None, order=2, scatter_kws={"s": 40}) 10 plt.show()
运行结果:
根据某属性的不同类别绘制曲线
根据一个属性按类别绘制图像
1 tips = sns.load_dataset("tips") 2 sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips) 3 # hue 列名分割 4 sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, 5 markers=["o", "*"], palette="Set1") 6 plt.show()
运行结果:
按两个属性的类别绘制,
这里 hue 参数指定分类单调属性;col="time" 指定绘制图的时候将time的类别绘制在一行,如time有两个类别,
就绘制两列,如果加一个参数row,那么row指定的属性有几个类别就会绘制几行。
1 sns.lmplot(x="total_bill", y="tip", hue="smoker", col="time", data=tips) 2 plt.show()
1 sns.lmplot(x="total_bill", y="tip", hue="smoker", 2 col="time", row="sex", data=tips) 3 plt.show()
运行结果:
ax参数会改变坐标的缩放;如果指定的col参数对应的属性有4个类别,那么画出来就是1行4列,这样不太美观,
我们可以用col_wrap=2 设定为2行。aspect=.5 你也可以使用这个参数设置长宽比。size参数已经停用,请使用
height表示“size”。
1 f, ax = plt.subplots(figsize=(5, 5)) 2 sns.regplot(x="total_bill", y="tip", data=tips, ax=ax) 3 plt.show() 4 sns.regplot(x="total_bill", y="tip", data=tips) 5 plt.show() 6 sns.lmplot(x="total_bill", y="tip", col="day", 7 data=tips, col_wrap=2, height=4)
8 plt.show()
运行结果: