注意
前往結尾以下載完整的範例程式碼。
使用 LineCollection 繪製多條線條#
Matplotlib 可以使用 LineCollection
有效地一次繪製多條線條。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import LineCollection
colors = ["indigo", "blue", "green", "yellow", "orange", "red"]
# create a list of half-circles with varying radii
theta = np.linspace(0, np.pi, 36)
radii = np.linspace(4, 5, num=len(colors))
arcs = [np.column_stack([r * np.cos(theta), r * np.sin(theta)]) for r in radii]
fig, ax = plt.subplots(figsize=(6.4, 3.2))
# set axes limits manually because Collections do not take part in autoscaling
ax.set_xlim(-6, 6)
ax.set_ylim(0, 6)
ax.set_aspect("equal") # to make the arcs look circular
# create a LineCollection with the half-circles
# its properties can be set per line by passing a sequence (here used for *colors*)
# or they can be set for all lines by passing a scalar (here used for *linewidths*)
line_collection = LineCollection(arcs, colors=colors, linewidths=4)
ax.add_collection(line_collection)
plt.show()

我們可以使用顏色對應,而不是傳遞顏色列表(colors=colors
)。然後根據傳遞到 *array* 參數的其他值陣列,對線條進行顏色編碼。在以下範例中,我們透過傳遞 array=radii
,根據線條的半徑為它們著色。
num_arcs = 15
theta = np.linspace(0, np.pi, 36)
radii = np.linspace(4, 5.5, num=num_arcs)
arcs = [np.column_stack([r * np.cos(theta), r * np.sin(theta)]) for r in radii]
fig, ax = plt.subplots(figsize=(6.4, 3))
# set axes limits manually because Collections do not take part in autoscaling
ax.set_xlim(-6, 6)
ax.set_ylim(0, 6)
ax.set_aspect("equal") # to make the arcs look circular
# create a LineCollection with the half-circles and color mapping
line_collection = LineCollection(arcs, array=radii, cmap="rainbow")
ax.add_collection(line_collection)
fig.colorbar(line_collection, label="Radius")
ax.set_title("Line Collection with mapped colors")
plt.show()

參考資料
此範例中顯示了以下函數、方法、類別和模組的使用
腳本總執行時間:(0 分鐘 1.565 秒)