2013-08-23 18 views
5

Quando si tenta di aggiungere una patch rettangolo con un modello di tratteggio a un grafico sembra che sia impossibile impostare l'argomento della parola chiave edgecolor su 'none' quando si specifica anche un valore di tratteggio. In altre parole sto cercando di aggiungere un rettangolo tratteggiato SENZA un bordo ma con un motivo di riempimento. Questo non sembra funzionare. Il modello si mostra solo se consento anche che venga disegnato un bordo attorno al rettangolo.patch rettangolari tratteggiate senza bordi in matplotlib

Qualsiasi aiuto su come ottenere il comportamento desiderato?

risposta

10

È necessario utilizzare l'argomento linewidth, che deve essere impostato su zero.

Esempio (sulla base di 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() 

Otterrete questa immagine: enter image description here

+0

Potete controllare la larghezza di riga dell'effetto portellone senza aumentare la dimensione del bordo? – jkokorian

+0

L'argomento 'linewidth' controlla solo la larghezza del bordo. Secondo i commenti in [questa risposta] (http://stackoverflow.com/questions/14325773/how-to-change-marker-border-width-and-hatch-width), non è possibile controllare l'ampiezza di riga di l'effetto di tratteggio. – carla

Problemi correlati