首頁  >  文章  >  後端開發  >  如何為 10 個連續點的每段繪製不同顏色的線?

如何為 10 個連續點的每段繪製不同顏色的線?

Linda Hamilton
Linda Hamilton原創
2024-10-31 01:53:02368瀏覽

How to Plot a Line with Varying Colors for Each Segment of 10 Consecutive Points?

用不同顏色繪製一條線

問題陳述

給定兩個列表,latt 和lont,目標是繪製一條線,其中每個列表10個連續點的線段以不同的顏色表示。

解決方案

線段數量有限

如果線段數量很少,例如10 個或更少,一個簡單的方法是使用循環以唯一的顏色繪製每個線段。

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Generate random colors
def uniqueish_color():
    return plt.cm.gist_ncar(np.random.random())

# Plot the line segments
xy = (np.random.random((10, 2)) - 0.5).cumsum(axis=0)
fig, ax = plt.subplots()
for start, stop in zip(xy[:-1], xy[1:]):
    x, y = zip(start, stop)
    ax.plot(x, y, color=uniqueish_color())
plt.show()</code>

大量線段

對於大量線段,使用循環可能會很慢。相反,建立一個 LineCollection 物件。

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

# Generate the line segments
xy = (np.random.random((1000, 2)) - 0.5).cumsum(axis=0)
xy = xy.reshape(-1, 1, 2)
segments = np.hstack([xy[:-1], xy[1:]])

# Create a LineCollection object
fig, ax = plt.subplots()
coll = LineCollection(segments, cmap=plt.cm.gist_ncar)

# Set the color array
coll.set_array(np.random.random(xy.shape[0]))

# Add the LineCollection to the axes
ax.add_collection(coll)
ax.autoscale_view()

# Display the plot
plt.show()</code>

選擇顏色

對於這兩種方法,我們使用「gist_ncar」顏色圖來產生唯一的顏色。有關其他顏色圖選項,請參閱此頁面:http://matplotlib.org/examples/color/colormaps_reference.html

以上是如何為 10 個連續點的每段繪製不同顏色的線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn