欢迎访问宙启技术站
智能推送

使用matplotlib.collections绘制多个颜色和大小的散点图

发布时间:2023-12-24 02:36:11

在数据可视化中,散点图是一种常用的图形之一,用于展现不同变量之间的关系。而在matplotlib库中,使用matplotlib.collections模块可以绘制多个颜色和大小不同的散点图。

下面以绘制多个颜色和大小的散点图为例,详细介绍如何使用matplotlib.collections模块进行绘制。

首先,我们需要导入matplotlib库和numpy库,并创建一个画布和坐标系。

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

接下来,我们需要创建散点图的数据。假设我们有一个包含100个点的数据集,每个点有两个属性x和y,以及对应的大小s和颜色c。我们可以使用numpy库的random模块生成随机数来模拟这些数据。

# 创建数据

n = 100

x = np.random.rand(n)

y = np.random.rand(n)

s = np.random.rand(n) * 200  # 大小范围为0-200

c = np.random.rand(n)  # 颜色范围为0-1

接下来,我们可以使用matplotlib.collections模块的PathCollection类来绘制散点图。

# 绘制散点图

scatter = ax.scatter(x, y, s=s, c=c, cmap='viridis')

上述代码中,scatter为一个PathCollection对象,表示散点图。其中,x和y分别表示散点的横坐标和纵坐标,s表示散点的大小,c表示散点的颜色,cmap表示使用的颜色映射。

最后,我们可以添加颜色和大小的图例,使得散点图更加直观。

# 添加颜色图例

cbar = plt.colorbar(scatter)

# 添加大小图例

sizes = [20, 80, 160]  # 图例中的大小范围

labels = ['Small', 'Medium', 'Large']  # 图例中的标签

legend1 = ax.legend(*scatter.legend_elements("sizes", num=3, fmt="{x:.0f}"),

                    loc="upper left", title="Size")

ax.add_artist(legend1)

上述代码中,首先使用plt.colorbar()函数添加颜色图例,函数的参数为散点图对象。然后使用scatter.legend_elements()函数创建大小图例的元素,并将其添加到坐标系中。

最后,我们通过设置标题和标签来增加图例的信息。

- 'viridis'表示使用viridis颜色映射,即颜色范围为从蓝色到黄色的渐变。

- "sizes"表示图例的类型为大小。

- num表示图例中要显示的大小的个数,即上述代码中的3。

- fmt表示图例中的标签格式,即上述代码中的"{x:.0f}"表示将大小取整。

至此,我们就完成了多个颜色和大小的散点图的绘制。完整的代码如下:

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

# 创建数据

n = 100

x = np.random.rand(n)

y = np.random.rand(n)

s = np.random.rand(n) * 200  # 大小范围为0-200

c = np.random.rand(n)  # 颜色范围为0-1

# 绘制散点图

scatter = ax.scatter(x, y, s=s, c=c, cmap='viridis')

# 添加颜色图例

cbar = plt.colorbar(scatter)

# 添加大小图例

sizes = [20, 80, 160]  # 图例中的大小范围

labels = ['Small', 'Medium', 'Large']  # 图例中的标签

legend1 = ax.legend(*scatter.legend_elements("sizes", num=3, fmt="{x:.0f}"),

                    loc="upper left", title="Size")

ax.add_artist(legend1)

# 设置标题和标签

ax.set_title('Scatter plot with different sizes and colors')

ax.set_xlabel('X')

ax.set_ylabel('Y')

# 显示图形

plt.show()

绘制完成后,我们可以得到一个带有多个颜色和大小的散点图,图中每个点的颜色和大小都不同,使得数据更加丰富和直观。

综上所述,使用matplotlib.collections模块可以绘制多个颜色和大小的散点图。我们可以根据具体需求来调整颜色和大小的取值范围,使得散点图展现更准确的信息。这对于展示和分析数据关系非常有用。