2015-07-21 50 views
11

在matplotlib中,我想使用matplotlib.pyplot作一條線,它是交替的黑色和黃色破折號,然後我想將該行包括在圖例中。我怎麼做?如何使用matplotlib以虛線交替顏色?

我可以這樣做:

from matplotlib import pyplot as plt, gridspec 
import numpy as np 

grid = gridspec.GridSpec(1,1) 
ax = plt.subplot(grid[0,0]) 

x = np.arange(1,11) 
y = x * 2 

ax.plot(x, y, '-', color = 'black', linewidth = 1, label = 'my line') 
ax.plot(x, y, '--', color = 'yellow') 
ax.legend() 

plt.show() 

但隨後的傳奇行會顯示爲黑色實線,而不是黑色和黃色的虛線。

我確實看過matplotlib.path_effects,但我無法弄清楚是否有可能實現我想要的;我可以勾畫或隱藏線條,但我不確定是否可以覆蓋不同顏色的虛線。

+1

簡短的問題:該線應該有黃色和黑色破折號(即黃色破折號 - 空白 - 黑色破折號 - 空白 - 黃色短劃線...)。或者將適應黑色實線頂部的黃色虛線的圖例條目足夠嗎? – hitzg

+0

我腦海中的圖像是Tanmaya Meher在下面發佈的內容 - 但如果您按照您的描述有一種做法,那對於未來訪問此問題的人可能會有所幫助,所以我鼓勵您無論如何添加它作爲答案! –

回答

10

試試這個。

from matplotlib import pyplot as plt, gridspec, lines 

import numpy as np 

grid = gridspec.GridSpec(1,1) 
ax = plt.subplot(grid[0,0]) 

x = np.arange(1,11) 
y = x * 2 

ax.plot(x, y, '-', color = 'black', linewidth = 5) 
ax.plot(x, y, '--', color = 'lawngreen', linewidth = 5) 

dotted_line1 = lines.Line2D([], [], linewidth=5, linestyle="--", dashes=(10, 1), color='lawngreen') 
dotted_line2 = lines.Line2D([], [], linewidth=5, linestyle="-", dashes=(5, 4), color='black') 

plt.legend([(dotted_line1, dotted_line2)], ["My Line"]) 
plt.show() 

我增加了線寬,所以它清晰可見。由於黃色在白色背景中並不那麼清晰,將其更改爲綠色。對於那個很抱歉。你可以隨時改變顏色:) output

+1

謝謝,這是完美的。 –