Matplotlib.pyplot绘制散点图
Matplotlib是Python中最常用的数据可视化库之一,它提供了丰富的绘图工具包,包括直方图、柱状图、折线图、散点图等等,非常适用于数据分析和探索性数据分析。其中,散点图是一种常用的数据可视化方式,既能展示数据之间的相关关系,也能表现出数据的分布情况。
在Matplotlib中,使用matplotlib.pyplot模块可以快速地绘制简单的散点图,本文将介绍如何使用该模块来绘制散点图。
阅读更多:Matplotlib 教程
1. 导入Matplotlib.pyplot模块
在使用Matplotlib.pyplot绘制散点图前,需要先导入该模块。
import matplotlib.pyplot as plt
2. 绘制散点图的基本方法
绘制散点图的基本方法是使用plt.scatter()函数,该函数有两个必要的参数:x和y,分别表示x轴和y轴的数据。除此之外,还可以调整点的大小、颜色、标记样式等。
import matplotlib.pyplot as plt
# 构造数据
x = [1, 2, 3, 4, 5]
y = [0.5, 1.2, 1.5, 2.0, 2.3]
# 绘制散点图
plt.scatter(x, y)
# 显示图像
plt.show()
在这个例子中,我们首先构造了两个数组x和y,然后使用plt.scatter(x, y)来绘制了散点图。注意,这里我们没有指定点的大小、颜色和样式,因此使用默认值进行绘制。最后,使用plt.show()来显示图像。
3. 调整散点图的样式
在绘制散点图时,可以调整散点的样式,以展现数据的不同特征。下面将介绍一些常见的调整方法。
3.1.调整点的大小和颜色
为了研究两个变量之间的相关关系,可以调整点的大小和颜色。例如,我们可以使用x轴变量表示数据集中每个点的大小,而y轴变量代表每个点的颜色,这样可以更好地展现数据集中的模式。
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
x = np.random.rand(100)
y = np.random.rand(100)
# 设置点的大小和颜色
colors = np.arange(100)
sizes = np.random.randint(50, 500, size=100)
# 绘制散点图
plt.scatter(x, y, s=sizes, c=colors, cmap='rainbow')
# 显示图像
plt.colorbar()
plt.show()
在这个例子中,我们使用了NumPy库的numpy.random.rand()函数生成了两个长度为100的随机数组x和y,然后使用numpy.arange()函数生成了一个从0到99的序列,作为每个点的颜色。此外,我们还使用numpy.random.randint()函数在50到500之间生成每个点的大小。
最后,我们使用plt.scatter(x, y, s=sizes, c=colors, cmap='rainbow')来绘制散点图,其中s参数表示点的大小,c参数表示点的颜色,cmap参数表示使用彩虹色的映射表来映射颜色。在绘制后,我们添加了一个颜色条(plt.colorbar()),以表示颜色对应的值。
3.2.调整点的标记样式
在绘制散点图时,可以使用不同的标记样式,例如’.’、’o’、’s’、’+’、’x’和’^’等,以区分不同的数据点。下面介绍几种不同的标记样式。
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
x = np.random.rand(100)
y = np.random.rand(100)
# 绘制散点图
plt.scatter(x, y, marker='o')
plt.scatter(x+0.1, y, marker='s')
plt.scatter(x+0.2, y, marker='+')
plt.scatter(x+0.3, y, marker='x')
plt.scatter(x+0.4, y, marker='^')
# 显示图像
plt.show()
在这个例子中,我们使用不同的标记样式(即marker参数),来表示不同的数据类型。’o’表示圆圈,’s’表示方形,’+’表示十字形,’x’表示叉子,’^’表示三角形。注意,在使用不同的标记样式时,需要保证它们的数据类型不同,否则会出现重合的点。
4.更多的散点图绘制方法
除了使用plt.scatter()函数以外,还可以使用plt.plot()函数来绘制散点图,同时还可以使用3D散点图和气泡图。
4.1.使用plt.plot()绘制散点图
虽然plt.plot()函数通常用来绘制折线图,但是也可以绘制散点图。与plt.scatter()函数不同,plt.plot()函数需要使用额外的参数来指定点的样式,如’.’、’o’、’s’等。
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
x = np.linspace(0, 10, 50)
y = np.sin(x)
# 绘制散点图
plt.plot(x, y, 'o', color='black')
# 显示图像
plt.show()
在这个例子中,我们使用了np.linspace()函数生成了一个从0到10的长度为50的一维数组x,并使用了np.sin()函数生成了一个相应的纵轴数组y。然后,我们使用plt.plot(x, y, 'o', color='black')来绘制散点图,其中’o’参数表示使用点作为标记样式,’color’参数表示使用黑色颜色。
4.2.绘制3D散点图
Matplotlib还可以绘制3D散点图,以展示数据点在三维空间中的分布情况。在绘制3D散点图时,需要使用mpl_toolkits.mplot3d模块中的Axes3D()函数,并指定点的三个坐标轴:x、y和z。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 生成三维数据
np.random.seed(1234)
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)
# 绘制3D散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, s=20, c='r', marker='o')
# 显示图像
plt.show()
在这个例子中,我们使用np.random.standard_normal()函数生成了三个长度为100的正态分布随机数,分别作为x、y和z坐标轴。然后,我们使用3D坐标轴对象ax的scatter()函数来绘制散点图,使用了点的大小、颜色和标记样式。
4.3.绘制气泡图
气泡图是一种特殊的散点图,可以用来表示三维数据。气泡图通常使用点的大小来表示第三个变量,可以更好地展现数据集中的模式。在Matplotlib中,可以使用plt.scatter()函数绘制气泡图,只需将第三个变量的值作为点的大小参数即可。
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
x = np.random.rand(50)
y = np.random.rand(50)
size = np.random.rand(50) * 50
color = np.random.rand(50)
# 绘制气泡图
plt.scatter(x, y, s=size, c=color)
# 显示图像
plt.colorbar()
plt.show()
在这个例子中,我们使用了NumPy库的numpy.random.rand()函数生成了x、y和size三个随机数组,其中size表示每个点的大小。此外,我们还使用了numpy.random.rand()函数生成了color数组,表示每个点的颜色。然后,我们使用plt.scatter(x, y, s=size, c=color)来绘制气泡图,其中s参数表示点的大小,c参数表示点的颜色。
总结
Matplotlib.pyplot是一个功能强大的工具包,可以用来绘制各种类型的散点图。在使用该工具包时,我们可以调整点的大小、颜色和标记样式,以展现数据的分布模式。此外,Matplotlib还可以绘制3D散点图和气泡图等特殊类型的散点图,以更好地展示数据的特征。无论是在数据分析、科学研究还是数据可视化等领域,散点图都是一种非常常见的图表形式,值得我们学习和应用。
极客教程