python scatter函数用法实例详解

在数据可视化中,散点图是一种非常常见的图表形式。Python中的matplotlib库提供了scatter()函数来绘制散点图。本文将详细介绍Python scatter函数的用法,以及一些实例供读者参考。

1. scatter函数介绍

scatter函数用于绘制散点图, 其基本语法为:

matplotlib.pyplot.scatter(

x, # 点的x坐标

y, # 点的y坐标

s=None, # 标量或数组,标记的大小

c=None, # 标量或数组,标记的颜色

marker=None, # 标记的形状

cmap=None, # Colormap对象,用于将标量映射到颜色

norm=None, # matplotlib.colors.Normalize类实例,用于将数据缩放到0-1范围

vmin=None, # cmap中的最小值

vmax=None, # cmap中的最大值

alpha=None, # 标记的不透明度

linewidths=None, # 标记的边框宽度

edgecolors=None, # 标记的边框颜色

*,

plotnonfinite=False, # 是否绘制无限值或nan值

data=None, # 数据是可选的

**kwargs, # 其它关键字参数,传递给matplotlib.collections.PathCollection

) -> matplotlib.collections.PathCollection

1.1 scatter函数参数说明

scatter函数的参数与matplotlib.axes.Axes.plot方法类似,notable的参数包括:

① x、y:数组形式的数据集

② s:标量或数组,标记的大小。可以是数字或与x和y长度相同的一维数组

③ c:标量或数组,标记的颜色。可以是数字或与x和y长度相同的一维数组。

④ marker:标记的形状。可以是一个字符,也可以是一个matplotlib.path.Path实例。默认是' o '。

⑤ cmap:Colormap对象,用于将标量映射到颜色。

⑥ norm:matplotlib.colors.Normalize类实例,用于将数据缩放到0-1范围内。

⑦ alpha:标记的不透明度

⑧ linewidths:标记的边框宽度

⑨ edgecolors:标记的边框颜色

⑩ plotnonfinite:是否绘制无限值或nan值

例如,我们可以使用以下代码创建一个简单的散点图:

import matplotlib.pyplot as plt

import numpy as np

x = np.random.rand(50)

y = np.random.rand(50)

plt.scatter(x, y)

plt.show()

运行上述代码,我们可以得到如下所示的散点图:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244056-1bc6c3d6-7e3c-426d-88c3-4d81a47d6793.png#clientId=u3d937365-6bc7-4&from=paste&height=199&id=u8595b478&margin=%5Bobject%20Object%5D&name=image.png&originHeight=398&originWidth=398&originalType=binary&ratio=1&size=12625&status=done&style=none&taskId=u05e027b5-7c46-440c-9d33-26a66b026f3&width=199)

2. scatter函数实例

下面我们来看一些具体的实例,帮助读者更好地理解scatter函数的用法。

2.1 带颜色的散点图

当我们想要在散点图中添加颜色信息时,可以将c参数设置为一个与x和y长度相同的数组。例如,我们可以使用以下代码创建一个带有随机颜色的散点图:

x = np.random.rand(50)

y = np.random.rand(50)

colors = np.random.rand(50)

plt.scatter(x, y, c=colors)

plt.show()

运行上述代码,我们可以得到如下所示的散点图:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244162-e2ac8cc7-5f9d-4d6a-a672-4395eeec83bf.png#clientId=u3d937365-6bc7-4&from=paste&height=199&id=u5941d2bc&margin=%5Bobject%20Object%5D&name=image.png&originHeight=398&originWidth=398&originalType=binary&ratio=1&size=12626&status=done&style=none&taskId=u2ec530f5-56b0-4b3c-a324-8b5c3458ad1&width=199)

我们也可以使用颜色映射来为数据集中的每个点分配颜色。例如,我们可以使用以下代码创建一个带有颜色映射的散点图:

x = np.random.rand(50)

y = np.random.rand(50)

colors = np.random.rand(50)

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar() # 添加颜色条

plt.show()

运行上述代码,我们可以得到如下所示的散点图:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244258-3fb13e3c-831b-4a62-83eb-e5c3079d889e.png#clientId=u3d937365-6bc7-4&from=paste&height=203&id=udb50d6f9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=407&originWidth=416&originalType=binary&ratio=1&size=20342&status=done&style=none&taskId=ua2fd5d90-327d-4fc8-9f2d-819a0a77b13&width=208)

2.2 不同大小的标记

当我们想要根据某些条件在散点图中使用不同大小的标记时,可以将s参数设置为一个大小相同的数组,并在其中存储每个点的大小信息。例如,以下代码创建一个散点图,其中每个点的大小根据其在横坐标上的值而定:

x = np.random.rand(50)

y = np.random.rand(50)

sizes = 1000 * x

plt.scatter(x, y, s=sizes)

plt.show()

运行上述代码,我们可以得到如下所示的散点图:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244456-5baed919-04cc-42a2-ac42-2aa279e1bae0.png#clientId=u3d937365-6bc7-4&from=paste&height=200&id=u1e72f222&margin=%5Bobject%20Object%5D&name=image.png&originHeight=399&originWidth=398&originalType=binary&ratio=1&size=12254&status=done&style=none&taskId=u8cac4bd6-4ab0-478b-971b-abbf5e70a9a&width=199)

2.3 不同形状的标记

当我们想要在散点图中使用不同的标记形状时,可以将marker参数设置为一个形状代码。例如,以下代码创建一个散点图,在其中使用圆形、正方形和三角形标记:

x = np.random.rand(50)

y = np.random.rand(50)

markers = ['o', 's', '^']

for i in range(0, len(x)):

plt.scatter(x[i], y[i], marker=markers[i % 3])

plt.show()

运行上述代码,我们可以得到如下所示的散点图:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244623-4956c75f-6e70-4995-a0f4-4bf9ff0ab4f5.png#clientId=u3d937365-6bc7-4&from=paste&height=199&id=u4f2d361e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=398&originWidth=397&originalType=binary&ratio=1&size=13505&status=done&style=none&taskId=ua3143aa6-fe42-4ea1-b7eb-d4b67f95034&width=199)

2.4 更复杂的数据

当我们面对更复杂的数据时,我们可以使用scatter函数创建更多样化的散点图。例如,以下代码演示了如何使用scatter函数创建一个囊括蒙太奇运动的散点图:

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()

x, y = np.random.rand(2, 50)

colors = np.random.rand(50)

sizes = 500 * np.random.rand(50)

def update(frame):

x, y = np.random.rand(2, 50)

colors = np.random.rand(50)

sizes = 500 * np.random.rand(50)

ax.clear()

ax.scatter(x, y, c=colors, s=sizes)

ax.set_xlim([0, 1])

ax.set_ylim([0, 1])

ani = FuncAnimation(fig, update, frames=range(1, 100), repeat=True)

plt.show()

运行上述代码,我们将获得一个动画散点图,随着时间的推移,不停地重新绘制:

![image.png](https://cdn.nlark.com/yuque/0/2022/png/97322/1643888244766-7fe68c49-8f33-457d-8eb5-91bac454052a.png#clientId=u3d937365-6bc7-4&from=paste&height=321&id=u1d27fd15&margin=%5Bobject%20Object%5D&name=image.png&originHeight=640&originWidth=640&originalType=binary&ratio=1&size=165650&status=done&style=none&taskId=u7e8928f9-a95a-4c46-a00c-cfb8bce44d5&width=321)

3. 总结

在本文中,我们详细介绍了Python scatter函数的用法,并展示了一些示例来展示如何在散点图中添加颜色、大小和形状信息,以及如何处理更复杂的数据。希望这篇文章可以帮助初学者更好地理解scatter函数,并在数据可视化方面取得更好的效果。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签