¿Cómo puedo rotar un gráfico de matplotlib a 90 grados?

He creado una figura en matplotlib que contiene tres subplots, una en el cuadrante superior izquierdo, una en el cuadrante superior derecho y otra en el cuadrante inferior derecho. La figura superior derecha contiene una imagen en dos dimensiones, y las otras dos gráficas son la proyección en los ejes Y y X respectivamente. Me gustaría rotar la subplot del cuadrante superior izquierdo a través de 90 grados en sentido contrario a las agujas del reloj, de modo que el eje x de esa gráfica esté a lo largo del eje y de la gráfica 2-d.

Para la ttwig secundaria, me doy cuenta de que podría voltear los datos de x e y, rotar las tags de los ejes, crear un título de la ttwig en el lado izquierdo, etc. a través de 90deg. Pero no puedo encontrar uno.

¿Hay una manera simple de hacer esto?

Muchos de los gráficos 1P de Pyplot parecen tener opciones de “orientación” o “pivote” dentro de sus propios argumentos. Por ejemplo, del ejemplo de histogtwig de matplotlib.org:

matplotlib.pyplot.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype=u'bar', align=u'mid', orientation=u'vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, **kwargs) 

Solo cambia a horizontal ( orientation=u'vertical' )

Otro parámetro interesante para muchas funciones es la transform (a diferencia de la orientation o el pivot este parámetro también se puede usar, por ejemplo, en el plot ).

El parámetro de transform permite agregar una transformación, especificada por un objeto Transform . Por ejemplo, esta es la forma en que rotaría la gráfica de algunos datos aleatorios:

 import numpy from matplotlib import pyplot, transforms data = numpy.random.randn(100) # first of all, the base transformation of the data points is needed base = pyplot.gca().transData rot = transforms.Affine2D().rotate_deg(90) # define transformed line line = pyplot.plot(data, 'r--', transform= rot + base) # or alternatively, use: # line.set_transform(rot + base) pyplot.show() 

Para ver un ejemplo sobre cómo rotar un parche, vea esta respuesta , que también fue la fuente de inspiración para esta respuesta.


actualizar

Recientemente descubrí que el parámetro de transform no funciona como se esperaba cuando se usa pyplot.scatter (y otras PathCollections ). En este caso, es posible que desee utilizar offset_transform . Consulte esta respuesta para obtener más información sobre cómo se puede configurar offset_transform .

 from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt fig=plt.figure() ax=fig.add_subplot(111,projection='3d') # for rotate the axes and update. for angle in range(0,360): ax.view_init(30,angle) plt.show()