2012-05-11 78 views
14

如何將顏色設置爲矩形,例如在matplotlib中?我嘗試使用參數顏色,但沒有成功。如何在Matplotlib中將顏色設置爲矩形?

我有以下代碼:

fig=pylab.figure() 
ax=fig.add_subplot(111) 

pylab.xlim([-400, 400])  
pylab.ylim([-400, 400]) 
patches = [] 
polygon = Rectangle((-400, -400), 10, 10, color='y') 
patches.append(polygon) 

p = PatchCollection(patches, cmap=matplotlib.cm.jet) 
ax.add_collection(p) 
ax.xaxis.set_major_locator(MultipleLocator(20))  
ax.yaxis.set_major_locator(MultipleLocator(20))  

pylab.show() 

回答

21

我不能讓你的代碼工作,但希望這將幫助:

import matplotlib 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 
rect1 = matplotlib.patches.Rectangle((-200,-100), 400, 200, color='yellow') 
rect2 = matplotlib.patches.Rectangle((0,150), 300, 20, color='red') 
rect3 = matplotlib.patches.Rectangle((-300,-50), 40, 200, color='#0099FF') 
circle1 = matplotlib.patches.Circle((-200,-250), radius=90, color='#EB70AA') 
ax.add_patch(rect1) 
ax.add_patch(rect2) 
ax.add_patch(rect3) 
ax.add_patch(circle1) 
plt.xlim([-400, 400]) 
plt.ylim([-400, 400]) 
plt.show() 

生產: enter image description here

4

原來,您需要執行ax.add_artist(Rectangle)以使顏色規範起作用;當使用patches.append(Rectangle)時,矩形顯示爲藍色(至少在我的PC上)忽略任何顏色規格。

順便說一句,請注意artists — Matplotlib 1.2.1 documentation: class matplotlib.patches.Rectangle指出,有

  • edgecolor - 中風顏色
  • facecolor - 用於填充顏色

...再有就是color - 這基本上套中風和填充顏色在同一時間。

下面是修改的OP代碼,我已經在Linux(Ubuntu的11.04)測試,蟒2.7,matplotlib 0.99.3:

import matplotlib.pyplot as plt 
import matplotlib.collections as collections 
import matplotlib.ticker as ticker 

import matplotlib 
print matplotlib.__version__ # 0.99.3 

fig=plt.figure() #pylab.figure() 
ax=fig.add_subplot(111) 

ax.set_xlim([-400, -380]) #pylab.xlim([-400, 400]) 
ax.set_ylim([-400, -380]) #pylab.ylim([-400, 400]) 
patches = [] 
polygon = plt.Rectangle((-400, -400), 10, 10, color='yellow') #Rectangle((-400, -400), 10, 10, color='y') 
patches.append(polygon) 

pol2 = plt.Rectangle((-390, -390), 10, 10, facecolor='yellow', edgecolor='violet', linewidth=2.0) 
ax.add_artist(pol2) 


p = collections.PatchCollection(patches) #, cmap=matplotlib.cm.jet) 
ax.add_collection(p) 
ax.xaxis.set_major_locator(ticker.MultipleLocator(20)) # (MultipleLocator(20)) 
ax.yaxis.set_major_locator(ticker.MultipleLocator(20)) # (MultipleLocator(20)) 

plt.show() #pylab.show() 

這是輸出:

matplotlib.png

相關問題