Actualmente tengo un código que llama a matplotlib.pylab.plot
varias veces para mostrar múltiples conjuntos de datos en la misma pantalla, y Matplotlib escala cada uno al mínimo y máximo globales, considerando todos los diagramas. ¿Hay alguna manera de pedirle que escale cada trama de forma independiente, al mínimo y máximo de esa trama en particular?Múltiples diagramas superpuestos con escalado independiente en Matplotlib
Respuesta
No hay soporte directo para esto, pero aquí hay un código de un mailing list posting que illlustrates dos ejes verticales independientes:
x=arange(10)
y1=sin(x)
y2=10*cos(x)
rect=[0.1,0.1,0.8,0.8]
a1=axes(rect)
a1.yaxis.tick_left()
plot(x,y1)
ylabel('axis 1')
xlabel('x')
a2=axes(rect,frameon=False)
a2.yaxis.tick_right()
plot(x,y2)
a2.yaxis.set_label_position('right')
ylabel('axis 2')
a2.set_xticks([])
Ésta es la forma de crear una sola parcela (add_subplot (1,1,1)) y limite la escala en los ejes y.
myFig = figure()
myPlot = self.figure.add_subplot(1,1,1)
myPlot.plot([1,2,3,4,5], [5,4,3,2,1], '+r')
myPlot.set_ylim(1,5) # Limit y-axes min 1, max 5
Necesito algo como esto, pero quería crear un ejemplo que pueda copiar y pegar en el caparazón interactivo y echarle un vistazo. Aquí es para aquellos de ustedes que requiere una solución de trabajo:
from numpy import arange
from math import sin, cos
import matplotlib.pyplot as plt
x = arange(10)
y1 = [sin(i) for i in x]
y2 = [10*cos(i) for i in x]
rect = [0.1, 0.1, 0.8, 0.8]
a1 = plt.axes(rect) # Create subplot, rect = [left, bottom, width, height] in normalized (0, 1) units
a1.yaxis.tick_left() # Use ticks only on left side of plot
plt.plot(x, y1)
plt.ylabel('axis 1')
plt.xlabel('x')
a2 = plt.axes(rect, frameon=False) # frameon, if False, suppress drawing the figure frame
a2.yaxis.tick_right()
plt.plot(x, y2)
a2.yaxis.set_label_position('right')
plt.ylabel('axis 2')
a2.set_xticks([])
plt.show()
probado y funciona en Python 2.7.6, 1.8.1 numpy, matpotlib 1.3.1. Voy a seguir jugando con eso, buscando una manera ordenada de trabajar con diagramas de fechas superpuestas. Publicaré mis hallazgos.
Aquí hay una solución que usa diagramas de fecha, y creo que es la solución más optimizada que usa twinx() una mano corta para agregar un segundo eje y.
import matplotlib.pyplot as plt
import matplotlib.dates as md
import datetime
import numpy
numpy.random.seed(0)
t = md.drange(datetime.datetime(2012, 11, 1),
datetime.datetime(2014, 4, 01),
datetime.timedelta(hours=1)) # takes start, end, delta
x1 = numpy.cumsum(numpy.random.random(len(t)) - 0.5) * 40000
x2 = numpy.cumsum(numpy.random.random(len(t)) - 0.5) * 0.002
fig = plt.figure()
ax1 = fig.add_subplot(111)
fig.suptitle('a title', fontsize=14)
fig.autofmt_xdate()
plt.ylabel('axis 1')
plt.xlabel('dates')
ax2 = ax1.twinx()
ax1.plot_date(t, x1, 'b-', alpha=.65)
ax2.plot_date(t, x2, 'r-', alpha=.65)
plt.ylabel('axis 2')
plt.show()
De la documentación, matplotlib.pyplot.twinx (ax = None) hacer un segundo ejes que comparte el eje x. Los nuevos ejes se superpondrán al eje (o los ejes actuales si el eje es Ninguno). Los ticks para ax2 se colocarán a la derecha y se devolverá la instancia de ax2. Más here.
- 1. diagramas de estilo 'circos' con matplotlib?
- 2. matplotlib: ejes insertados para múltiples diagramas de caja
- 3. Superposición de diagramas de imshow en matplotlib
- 4. Color de fijación en diagramas de dispersión en matplotlib
- 5. Cómo mostrar los diagramas de matplotlib en python
- 6. Rasterización de elementos múltiples en matplotlib
- 7. Ocultar el texto del eje en los diagramas matplotlib
- 8. ¿Los diagramas de Matplotlib no aparecen en Mac OSX?
- 9. matplotlib vinculados x ejes con ejes y de escalado automático en el zoom
- 10. ¿Cómo se manejan proyectos múltiples (superpuestos) en trac?
- 11. ¿Exporta múltiples diagramas de glm como PNG?
- 12. Documentos con diagramas en proyectos github?
- 13. Diagramas de dispersión en C++
- 14. Matplotlib, leyenda con múltiples marcadores diferentes con una etiqueta
- 15. Diagramas de flujo en comparación con diagramas de actividad UML
- 16. Matplotlib: trazado simultáneo en múltiples hilos
- 17. escalado de imagen con CSS
- 18. Cómo trazar diagramas de caja 'múltiples' en una trama?
- 19. Elementos superpuestos en CSS
- 20. nginx en PROXY_PASS servidor independiente para múltiples aplicaciones con rieles sub URI de pasajeros independiente en diferentes cajas
- 21. Cubos superpuestos
- 22. Disposición de múltiples figuras utilizando Matplotlib
- 23. Diagramas de Venn con R?
- 24. Eje Matplotlib con dos escalas origen compartido
- 25. diagramas de Gantt con R
- 26. Escalado de imágenes con Java JAI
- 27. Escalado en JavaFX y ScrollPanes
- 28. ¿Fusionar intervalos de tiempo superpuestos?
- 29. Enumeraciones, valores superpuestos, C#
- 30. ¿Cómo grafico múltiples ejes X o Y en matplotlib?
El alcance de la pregunta original parece haber sido para N en lugar de 2 gráficos a escala: cuando intento esto con 3 o más, muere (usando a2, a3, etc. para instancias de ejes adicionales). Alguna idea de cómo obtener ¿un conjunto completo de datasets renderizados correctamente a escala al mismo tiempo? – tehwalrus