2012-09-15 10 views
6

Sto facendo alcuni grafici di contorni in matplotlib e la lunghezza dei trattini è troppo lunga. Anche la linea tratteggiata non ha un bell'aspetto. Mi piacerebbe impostare manualmente la lunghezza del trattino. Posso impostare la lunghezza esatta del trattino quando sto facendo una semplice trama usando plt.plot(), tuttavia non riesco a capire come fare la stessa cosa con una trama di contorno.Come posso impostare la lunghezza del trattino in un grafico del contorno a mazzetta di vetro

penso che il seguente codice dovrebbe funzionare, ma ho l'errore:

File "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/backends/backend_macosx.py", line 80, in draw_path_collection 
    offset_position) 
TypeError: failed to obtain the offset and dashes from the linestyle 

Ecco un esempio di quello che sto cercando di fare, adattato da esempi MPL:

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


delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * (Z2 - Z1) 

plt.figure() 

CS = plt.contour(X, Y, Z, 6, colors='k',linestyles='dashed') 

for c in CS.collections: 
    c.set_dashes([2,2]) 

plt.show() 

Grazie!

risposta

9

Quasi.

E ':

for c in CS.collections: 
    c.set_dashes([(0, (2.0, 2.0))]) 

Se tu avessi messo un print c.get_dashes() lì, si sarebbe trovato fuori (è quello che ho fatto).

Forse la definizione dello stile di linea è leggermente cambiata e si stava lavorando da un esempio precedente.

Il collections documentation ha questo da dire:

  • set_dashes(ls)

    alias for set_linestyle

  • set_linestyle(ls)

    Set the linestyle(s) for the collection.

    ACCEPTS: [‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (offset, on-off-dash-seq) ]

Così [(0, (2.0, 2.0))], 0 è l'offset, e quindi la tupla è il modello di ripetizione on-off.

+0

Grazie mille! Ho stancato anche il formato (offset, (on, off), ma non mi ero reso conto che avevo bisogno delle parentesi all'interno delle parentesi quadre. I miei terreni sono fantastici ora. Mi hai migliorato la giornata. Grazie, Dan – DanHickstein

Problemi correlati