2013-01-14 15 views
21

In questo esempio di un marker del mio grafico a dispersione, ho impostato il colore su verde e il colore del bordo su nero, e si schiudono su "|". Perché il modello di tratteggio si mostri, devo impostare l'edgecolor, tuttavia quando lo faccio, ottengo un bordo molto spesso attorno al marcatore. Due domande:Come modificare la larghezza del bordo dell'indicatore e la larghezza del tratteggio?

1) Come posso impostare la dimensione di questo bordo (preferibilmente a 0)?

2) Come è possibile aumentare lo spessore delle linee di boccaporto?

http://img204.imageshack.us/img204/9730/markerp.png

Grazie!

+0

Per 2: dai un'occhiata a [Come modificare l'ampiezza di riga del tratteggio in matplotlib?] (Http://stackoverflow.com/questions/29549530/how-to-change-the-linewidth-of-hatch- in-matplotlib) – Henhuy

risposta

34
  1. È sufficiente impostare linewidth per controllare lo spessore del bordo dell'indicatore.
  2. È possibile aumentare la densità del tratteggio, ripetendo i simboli (nell'esempio seguente, '|' viene ripetuto nel riquadro R/H, notare che per ottenere linee diagonali NW-> SE il simbolo deve essere sfuggito quindi è necessario due volte molti personaggi per raddoppiarlo davvero - '\\\\' è la densità 2 mentre '||||' è la densità 4). Tuttavia, non penso che lo spessore delle singole linee all'interno del tratteggio sia controllabile.

vedere il codice esempio riportato di seguito per produrre grafici a dispersione come questi: documentazione example hatching control

import matplotlib.pyplot as plt 
# generate some data 
x = [1,2,3,4,5,8] 
y= [i**2 for i in x] 
y2= [60-i**2+3*i for i in x] 

# plot markers with thick borders 
plt.subplot(121) 
plt.scatter(x,y, s=500, marker='s', edgecolor='black', linewidth='3', facecolor='green', hatch='|') 
# compare with no borders, and denser hatch. 
plt.subplot(122) 
plt.scatter(x,y, s=500, marker='s', edgecolor='black', linewidth='0', facecolor='green', hatch='||||') 

plt.show() 

matplotlib su collections e scatter.

+0

Hai ragione a non essere in grado di modificare la larghezza delle linee di tratteggio, è codificato a 1 (almeno nell'aggbackend) – tacaswell

+0

e aggiungendo la possibilità di regolare le dimensioni dei boccaporti sembra un enorme impegno ... – tacaswell

+0

Quando si ha a che fare con multipli del carattere ''\'', può essere utile usare l'operatore di moltiplicazione della stringa Python. Ad esempio, a causa dell'escape di caratteri, per un singolo carattere '' \ '', dovresti usare la stringa' "\\" '. Per le ripetizioni 'n', puoi usare' n * "\\" ', ad esempio,' 4 * "\\" 'darebbe una stringa di quattro caratteri' '\' '. – naitsirhc

Problemi correlati