2012-09-15 19 views
6

Estoy haciendo algunas gráficas de contorno en matplotlib y la longitud de los guiones es demasiado larga. La línea de puntos tampoco se ve bien. Me gustaría configurar manualmente la longitud del guión. Puedo establecer la longitud exacta del guión cuando estoy haciendo un trazado simple usando plt.plot(), sin embargo, no puedo encontrar la manera de hacer lo mismo con un diagrama de contorno.¿Cómo puedo establecer la longitud del guión en un gráfico de contorno matplotlib

creo que el siguiente código debería funcionar, pero me sale el error:

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 

Este es un ejemplo de lo que estoy tratando de hacer, una adaptación de los ejemplos 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() 

Gracias!

Respuesta

9

Casi.

Es:

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

Si puso un print c.get_dashes() allí, se habría descubierto (que es lo que hice).

Tal vez la definición del estilo de línea ha cambiado un poco, y usted estaba trabajando desde un ejemplo anterior.

El collections documentation tiene esto que decir:

  • 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) ]

Así que en [(0, (2.0, 2.0))], 0 es el desplazamiento, y luego la tupla es el patrón de repetición de encendido y apagado.

+0

¡Muchas gracias! También cansé el formato (offset, (on, off)), pero no me había dado cuenta de que necesitaba el paréntesis dentro de los corchetes. Mis tramas se ven increíbles ahora. Usted acaba de hacer mi día. Gracias, Dan – DanHickstein

Cuestiones relacionadas