2011-06-23 11 views
8

Soy nuevo en matplotlib (¡y me encanta!), Pero me estoy frustrando. Tengo una rejilla polar representada como una matriz 2D. (las filas son secciones radiales, las columnas son secciones acimutales)¿Es posible visualizar un conjunto 2D como un trazado polar usando Matplotlib imshow()?

He podido mostrar la matriz 2D como una imagen rectangular (R vs. theta) usando pyplot.imshow() y como una gráfica polar usando pyplot. pcolor(). Sin embargo, pcolor() es dolorosamente lento para el tamaño de las matrices que estoy utilizando, por lo que quiero poder mostrar la matriz como una red polar usando imshow().

Usando pcolor(), esto es tan simple como establecer polar = True para la subtrama. ¿Hay alguna manera de mostrar el conjunto 2D como un diagrama polar usando imshow()? sin tener que hacer transformaciones de coordenadas en toda la matriz? Gracias de antemano

+0

acabo de descubrir pcolormesh(), pero Recibo un AttributeError: enmarañamiento. No estoy seguro de lo que eso significa ... Como dije, soy nuevo en matplotlib y tengo que decir que falta la documentación :( – John

+0

¿Cuán grandes son sus matrices y su malla es lógicamente rectangular? – matt

+0

Lo he gestionado con éxito para que pcolormesh() funcione, y es * significativamente * más rápido que pcolor(). Así que ya no necesitaré usar imshow(). Utilicé x, y = numpy.meshgrid() de antemano para asegurar la x , y las coordenadas y los datos de valores 2D coinciden. Las matrices están entre 170x314 y 850x1570. – John

Respuesta

9

Después de algunas investigaciones que descubrieron la función pcolormesh(), que ha demostrado ser significativamente más rápido que usar pcolor() y comparable a la velocidad de imshow().

Aquí está mi solución:

import matplotlib.pyplot as plt 
import numpy as np 

#...some data processing 

theta,rad = np.meshgrid(used_theta, used_rad) #rectangular plot of polar data 
X = theta 
Y = rad 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.pcolormesh(X, Y, data2D) #X,Y & data2D must all be same dimensions 
plt.show() 
+1

no funciona en la nueva versión, todavía necesita 'add_subplot (111, polar = 'True')' – Sleepyhead

Cuestiones relacionadas