Matplotlib繪製不同顏色的帶箭頭的線

2021-09-26 02:21:21 字數 2337 閱讀 9152

周五的時候計算出來一條線路,但是計算出來的只是類似與

0->10->19->2->..0
這樣的線路只有寫**的人才能看的懂無法直觀的表達出來,讓其它同事看的不清晰,所以考慮怎樣直觀的把線路圖畫出來。

&esp; 當然是考慮用matplotlib了,

匯入相關的庫

import matplotlib.pyplot as plt

import numpy

import matplotlib.colors as colors

import matplotlib.cm as cmx

後面兩個主要是用於處理顏色的。

準備資料

_locations = [

(4, 4), # depot

(4, 4), # unload depot_prime

(4, 4), # unload depot_second

(4, 4), # unload depot_fourth

(4, 4), # unload depot_fourth

(4, 4), # unload depot_fifth

(2, 0),

(8, 0), # locations to visit

(0, 1),

(1, 1),

(5, 2),

(7, 2),

(3, 3),

(6, 3),

(5, 5),

(8, 5),

(1, 6),

(2, 6),

(3, 7),

(6, 7),

(0, 8),

(7, 8)

]

畫圖

plt.figure(figsize=(10, 10))

p1 = [l[0] for l in _locations]

p2 = [l[1] for l in _locations]

plt.plot(p1[:6], p2[:6], 'g*', ms=20, label='depot')

plt.plot(p1[6:], p2[6:], 'ro', ms=15, label='customer')

plt.grid(true)

plt.legend(loc='lower left')

way = [[0, 12, 18, 17, 16, 4, 14, 10, 11, 13, 5], [0, 6, 9, 8, 20, 3], [0, 19, 21, 15, 7, 2]] #

cmap = plt.cm.jet

cnorm = colors.normalize(vmin=0, vmax=len(way))

for k in range(0, len(way)):

way0 = way[k]

colorval = scalarmap.to_rgba(k)

for i in range(0, len(way0)-1):

start = _locations[way0[i]]

end = _locations[way0[i+1]]

# plt.arrow(start[0], start[1], end[0]-start[0], end[1]-start[1], length_includes_head=true,

# head_width=0.2, head_length=0.3, fc='k', ec='k', lw=2, ls=linestyle[k], color='red')

plt.arrow(start[0], start[1], end[0]-start[0], end[1]-start[1],

length_includes_head=true, head_width=0.2, lw=2,

color=colorval)

plt.show()

cmap = plt.cm.jet

cnorm = colors.normalize(vmin=0, vmax=len(way))

cmap可以理解為顏色庫,cnorm設定顏色的範圍,有幾條線路就設定幾種顏色,scalarmap顏色生成完畢。最後在繪圖的時候,根據索引獲得相應的顏色就可以了。

結果如下:

matplotlib繪製等直線

利用contour contourf 描繪等值線 contourf 帶有填充效果 def fig2 y,x np.ogrid 2 2 200j,3 3 300j z x np.exp x 2 y 2 extent np.min x np.max x np.min y np.max y plt.fig...

Python使用matplotlib繪製三維曲線

本文主要演示如何使用matplotlib繪製三維圖形 如下 coding utf 8 import matplotlib as mpl from mpl toolkits.mplot3d import axes3d import numpy as np import matplotlib.pyplo...

android textView新增不同顏色的邊框

乙個群裡的兄弟問的,android給textview 新增邊框 可以使用shape 這個只能新增同一種 需要組合的形式 實現如下小果盤 1,使用 layer list 進行 做個組合 使用乙個 矩形邊框 和乙個其他顏色的直線進行 組合。上面的 helloword 是用的 組合寫的。還是直接貼 吧 然...