Python实现散点图和散点图矩阵的绘制
说明:代码运行环境为 Win10+Python3+jupyter notebook
散点图和趋势线的简单介绍:
散点图一般用于描述两个数量型变量之间的相关关系,而趋势线是显示相关性近似程度的一条直线。
绘制散点图的主要方法:
方法1:通过pandas包中的DataFrame对象调用plot()或plot.scatter()方法
方法2:通过matplotlib包中的axes对象调用scatter()方法
方法3:通过seaborn包中的scatterplot()方法
散点图绘制具体示例:
先导出需要的各种包:
%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set() #恢复seaborn的默认主题
加载数据并查看数据的表结构:
tips = sns.load_dataset('tips')
tips.head()
tips表结构如下图所示:
方法1,DataFrame.plot()示例:
fig,axes = plt.subplots()
tips.plot(x='total_bill',y='tip',kind='scatter',s=10**2,c='b',marker='o',ax=axes)
# 参数说明:
# x指定散点图水平轴表示的变量,y指定散点图垂直轴表示的变量
# kind=scatter表示绘制的是散点图,s指定散点的面积,c指定散点的颜色
# marker指定散点的形状,ax指定散点图绘制的子图位置
axes.set_title('The relationship between total_bill and tip')
axes.set_xlabel('total_bill')
axes.set_ylabel('tip')
plt.savefig('p1.png')
上述代码绘制的图形为:
DataFrame.plot()的用法,具体参考:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html
DataFrame.plot.scatter()的用法与DataFrame.plot()的用法类似,此处不再举例。
方法2,axes.scatter()示例:
fig,axes = plt.subplots()
axes.scatter(x=tips.total_bill,y=tips.tip,s=10**2,c='g',marker='^')
# 参数说明:
# 除了kind参数,其他同tips.plot()一样
axes.set_title('The relatioship between total_bill and tip')
axes.set_xlabel('tip_total')
axes.set_ylabel('tip')
plt.savefig('p2.png')
上述代码绘制的图形为:
axes.scatter()的用法,具体参考:
方法3,seaborn.scatterplot()示例:
fig,axes = plt.subplots()
sns.scatterplot(x='total_bill',y='tip',s=10**2,data=tips,ax=axes)
# 参数说明:
# x指定散点图水平轴表示的变量,y指定散点图垂直轴表示的变量
# s指定散点的面积,data指定数据来源,ax指定散点图绘制的子图位置
axes.set_title('The relationship between total_bill and tip')
axes.set_xlabel('total_bill')
axes.set_ylabel('tip')
plt.savefig('p3.png')
上述代码绘制的图形为:
seaborn.scatterplot()还可以指定散点的大小所表示的维度:
fig,axes = plt.subplots()
sns.scatterplot(x='total_bill',y='tip',size='size',data=tips,ax=axes)
# 参数说明:
# size指定了散点图的大小表示的变量,其他参数与上例相同
axes.set_title('The relationship between total_bill and tip')
axes.set_xlabel('total_bill')
axes.set_ylabel('tip')
plt.savefig('p4.png')
上述代码绘制的图形为:
seaborn.scatterplot()的用法,具体参考:
http://seaborn.pydata.org/generated/seaborn.scatterplot.html#seaborn.scatterplot
散点图矩阵的简单介绍:
当想要考察多个变量之间的相关关系时,可以使用散点图矩阵。
绘制散点图矩阵的主要方法:
方法1:通过seaborn包中的pairplot()方法
方法2:通过seaborn包中的pairgrid()方法
散点矩阵图绘制具体示例:
首先加载seaborn.pairplot()用到的数据iris,并查看iris的表结构:
iris = sns.load_dataset('iris')
iris.head()
iris的表结构如下图所示:
方法法1,seaborn.pairplot()示例:
sns.pairplot(data=iris,hue='species',vars=['sepal_width', 'sepal_length'])
# 参数说明:
# data指定pairplot()要用到的数据源,hue指定将data中的数据区分显示的依据
# vars指定data中要绘制成散点矩阵图的数据
plt.savefig('p5.png')
上述代码绘制的图形为:
seaborn.pairplot()的用法,具体参考:
http://seaborn.pydata.org/generated/seaborn.pairplot.html#seaborn.pairplot
方法2seaborn.PairGrid()与seaborn.pairplot()的用法类似,不过seaborn.pair()的灵活性更好。
seaborn.PairGrid()的用法,具体参考:
http://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid
其他参考资料:
《商务与经济统计》第十三版
PS:本文是博主原创文章,转载请注明出处。