Python实现散点图和散点图矩阵的绘制

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()的用法,具体参考:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.scatter.html?highlight=axes%20scatter#matplotlib.axes.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:本文是博主原创文章,转载请注明出处。

猜你喜欢

转载自blog.csdn.net/qq_41080850/article/details/83904005