2013-08-23 15 views
5

Beim Versuch, ein Rechteckfeld mit einem Schraffurmuster zu einem Plot hinzuzufügen, scheint es unmöglich zu sein, das Schlüsselwort argument edgecolor auf 'nonecolor' zu setzen, wenn auch ein Schraffurwert angegeben wird. Mit anderen Worten, ich versuche, ein schraffiertes Rechteck OHNE eine Kante, aber mit einer Musterfüllung hinzuzufügen. Das scheint nicht zu funktionieren. Das Muster erscheint nur dann, wenn ich auch eine Kante um den Rechteck-Patch ziehen lasse.schraffierte Rechteckfelder ohne Kanten in Matplotlib

Haben Sie Hilfe, um das gewünschte Verhalten zu erreichen?

Antwort

10

Sie sollten das Argument linewidth verwenden, das auf Null gesetzt werden muss.

Beispiel (basierend auf your other question's answer):

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
import numpy as np 

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

# generate some data: 
x,y = np.meshgrid(np.linspace(0,1),np.linspace(0,1)) 
z = np.ma.masked_array(x**2-y**2,mask=y>-x+1) 

# plot your masked array 
ax.contourf(z) 

# plot a patch 
p = patches.Rectangle((20,20), 20, 20, linewidth=0, fill=None, hatch='///') 
ax.add_patch(p) 
plt.show() 

Sie finden dieses Bild erhalten: enter image description here

+0

Können Sie die Linienbreite des Lukeneffekt steuern, ohne die Rahmengröße zu erhöhen? – jkokorian

+0

Das Argument 'linewidth' steuert nur die Breite des Rahmens. Laut den Kommentaren in [diese Antwort] (http://stackoverflow.com/questions/14325773/how-to-change-marker-border-width-and-hatch-width) ist es nicht möglich, die Linienbreite von zu kontrollieren der Lukeneffekt. – carla