简介
在本教程中,我们将学习如何使用 Matplotlib 中的LineCollection函数一次高效地绘制多条线。我们将了解如何绘制具有不同颜色和样式的多条线,以及如何使用掩码数组来屏蔽某些值。我们还将学习如何使用ScalarMappable.set_array函数将值数组映射到颜色。
虚拟机提示
虚拟机启动完成后,点击左上角切换到笔记本标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入库
在开始之前,我们需要导入必要的库。我们将使用matplotlib.pyplot和numpy。
import matplotlib.pyplot as plt
import numpy as np
创建数据
接下来,我们需要创建用于绘制线条的数据。我们将使用numpy创建一个包含x和y值的二维数组。
x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]
创建线条集合
现在,我们可以使用LineCollection函数创建一个LineCollection对象。我们可以设置linewidths(线宽)、colors(颜色)和linestyle(线条样式)参数来定制线条的外观。
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x
segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)
line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
colors=colors, linestyle='solid')
创建绘图
现在我们可以使用matplotlib创建一个绘图,并使用Axes对象的add_collection方法将LineCollection对象添加到绘图中。
fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())
ax.add_collection(line_segments)
ax.set_title('Line collection with masked arrays')
plt.show()
将颜色映射到值
我们还可以使用ScalarMappable.set_array函数将一组值数组映射到颜色。我们将创建一组新的数据,并创建一个新的LineCollection对象,将array参数设置为x值。然后,我们可以使用Figure对象的colorbar方法为绘图添加一个颜色条。
N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]
fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))
line_segments = LineCollection(segs, array=x,
linewidths=(0.5, 1, 1.5, 2),
linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('Line Collection with mapped colors')
plt.sci(line_segments)
plt.show()
总结
在本教程中,我们学习了如何使用 Matplotlib 中的LineCollection函数一次高效地绘制多条线。我们了解了如何绘制具有不同颜色和样式的多条线,以及如何使用掩码数组来屏蔽某些值。我们还学习了如何使用ScalarMappable.set_array函数将一组值数组映射到颜色。