2013-08-23 9 views
5

Podczas próby dodania prostokątnej łatki z wzorem kreskowania do wykresu wydaje się, że nie jest możliwe ustawienie słowa kluczowego argument edgecolor na "brak", gdy również określana jest wartość kreskowania. Innymi słowy, próbuję dodać wyrysowany prostokąt BEZ krawędzi, ale z wypełnieniem deseniem. To nie wydaje się działać. Wzór pojawia się tylko wtedy, gdy pozwalam również na narysowanie krawędzi wokół prostokąta.kreskowane prostokąty bez krawędzi w matplotlib

Każda pomoc w uzyskaniu pożądanego zachowania?

Odpowiedz

10

Powinieneś użyć argumentu linewidth, który musi być ustawiony na zero.

Przykład (na podstawie 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() 

Dostaniesz to zdjęcie: enter image description here

+0

można kontrolować linewidth efektu luku bez zwiększania wielkości granicznej? – jkokorian

+0

Argument 'linewidth' steruje tylko szerokością granicy. Zgodnie z komentarzami w [tej odpowiedzi] (http://stackoverflow.com/questions/14325773/how-to-change-marker-border-width-and-hatch-width), nie można kontrolować szerokości linii efekt luku. – carla

Powiązane problemy