給定兩個列表,latt和lont,目標是繪製一條線,其中每個清單10個連續點的線段以不同的顏色表示。
解決方案
線段數量有限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()
如果線段數量很少,例如10 個或更少,一個簡單的方法是使用循環以唯一的顏色繪製每個段。 import numpy as np 將 matplotlib.pyplot 導入為 plt # 產生隨機顏色 def uniqueish_color(): 返回 plt.cm.gist_ncar(np.random.random()) # 繪製線段 xy = (np.random.random((10, 2)) - 0.5).cumsum(axis=0) Fig, ax = plt.subplots() 開始時,停止於 zip(xy[:-1], xy[1:]): x, y = zip(開始, 停止) ax.plot(x, y, color=uniqueish_color()) plt.show()
大量線段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()
對於大量線段,使用循環可能會很慢。相反,建立一個 LineCollection 物件。 import numpy as np 將 matplotlib.pyplot 導入為 plt 從 matplotlib.collections 導入 LineCollection # 產生線段 xy = (np.random.random((1000, 2)) - 0.5).cumsum(axis=0) xy = xy.reshape(-1, 1, 2) 段 = np.hstack([xy[:-1], xy[1:]]) # 建立一個LineCollection對象 Fig, ax = plt.subplots() coll = LineCollection(段, cmap=plt.cm.gist_ncar) # 設定顏色數組 coll.set_array(np.random.random(xy.shape[0])) # 將 LineCollection 新增至座標區 ax.add_collection(coll) ax.autoscale_view() # 顯示繪圖 plt.show()
選擇顏色
對於這兩種方法,我們使用「gist_ncar」顏色圖來產生獨特的顏色。有關其他顏色圖選項,請參閱此頁面:http://matplotlib.org/examples/color/colormaps_reference.html免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3