how font change python matplotlib imshow

python - font - Imshow: extensión y aspecto



subplot title python (1)

Estoy escribiendo un sistema de software que visualiza segmentos y proyecciones a través de un conjunto de datos tridimensionales. Estoy usando matplotlib y específicamente visualizo los búferes de imagen que obtengo de mi código de análisis.

Dado que me gustaría anotar las imágenes con ejes de trazado, uso la palabra clave de extensión que imshow suministros para mapear las coordenadas de píxeles del búfer de imagen a un sistema de coordenadas de espacio de datos.

Desgraciadamente, matplotlib no sabe acerca de las unidades. Digamos (tomando un ejemplo artificial) que quiero trazar una imagen con dimensiones de 1000 m X 1 km . En ese caso, la extensión sería algo así como [0, 1000, 0, 1] . Aunque el conjunto de imágenes es cuadrado, dado que la relación de aspecto implícita en la palabra clave de extensión es 1000, los ejes de trazado resultantes también tienen una relación de aspecto de 1000.

¿Es posible forzar la relación de aspecto de la trama sin dejar de mantener las marcas y etiquetas principales generadas automáticamente que obtengo al usar la palabra clave extent?


Puede hacerlo configurando el aspecto de la imagen manualmente (o dejándola escalar automáticamente para llenar la extensión de la figura).

De forma predeterminada, imshow establece el aspecto de la trama en 1, ya que a menudo es lo que la gente quiere para los datos de imagen.

En tu caso, puedes hacer algo como:

import matplotlib.pyplot as plt import numpy as np grid = np.random.random((10,10)) fig, (ax1, ax2, ax3) = plt.subplots(nrows=3, figsize=(6,10)) ax1.imshow(grid, extent=[0,100,0,1]) ax1.set_title(''Default'') ax2.imshow(grid, extent=[0,100,0,1], aspect=''auto'') ax2.set_title(''Auto-scaled Aspect'') ax3.imshow(grid, extent=[0,100,0,1], aspect=100) ax3.set_title(''Manually Set Aspect'') plt.tight_layout() plt.show()