python - mostrar - plt.imshow size
¿Por qué plt.imshow() no muestra la imagen? (3)
¿Crees que plt.imshow
imprimirá una imagen para ti como plt.show
? En realidad no, plt.imshow
no muestra una imagen, esta recomendación acaba de terminar de dibujar la imagen en lugar de imprimirla. Entonces, si desea imprimirlos, necesita agregar esto: plt.show
, para mostrarle esta imagen.
Soy un novato en keras, y cuando intenté ejecutar mi primer programa de keras en mi linux, algo no funcionó como deseo. Aquí está mi código de python:
import numpy as np
np.random.seed(123)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print X_train.shape
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
La última oración no muestra nada. Copié esos códigos de un tutorial sin ninguna modificación. Y no hay nada malo con el backend de matplotlib en mi computadora. Lo he probado a través del código de abajo.
import matplotlib.pyplot as plt
data = [[0, 0.25], [0.5, 0.75]]
fig, ax = plt.subplots()
im = ax.imshow(data, cmap=plt.get_cmap(''hot''), interpolation=''nearest'',
vmin=0, vmax=1)
fig.colorbar(im)
plt.show()
Y luego tengo una imagen como esa:
Además, puedo imprimir X_train [0] y parece que no hay nada malo.
Entonces, ¿cuál podría ser la razón para eso? ¿Por qué la función imshow () en mi primer código no mostraba nada?
La solución fue tan simple como agregar plt.show()
al final del fragmento de código:
import numpy as np
np.random.seed(123)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print X_train.shape
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
plt.show()
plt.imgshow
muestra la imagen en los ejes, pero si necesita mostrar varias imágenes, use show()
para terminar la figura. El siguiente ejemplo muestra dos figuras:
import numpy as np
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
plt.show()
plt.imshow(X_train[1])
plt.show()
En Google Colab, si comenta el método show()
del ejemplo anterior, solo se mostrará una imagen (la última se conectó con X_train[1]
).
Aquí está el contenido de la ayuda:
plt.show(*args, **kw)
Display a figure.
When running in ipython with its pylab mode, display all
figures and return to the ipython prompt.
In non-interactive mode, display all figures and block until
the figures have been closed; in interactive mode it has no
effect unless figures were created prior to a change from
non-interactive to interactive mode (not recommended). In
that case it displays the figures but does not block.
A single experimental keyword argument, *block*, may be
set to True or False to override the blocking behavior
described above.
plt.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, hold=None, data=None, **kwargs)
Display an image on the axes.
Parameters
----------
X : array_like, shape (n, m) or (n, m, 3) or (n, m, 4)
Display the image in `X` to current axes. `X` may be an
array or a PIL image. If `X` is an array, it
can have the following shapes and types:
- MxN -- values to be mapped (float or int)
- MxNx3 -- RGB (float or uint8)
- MxNx4 -- RGBA (float or uint8)
The value for each component of MxNx3 and MxNx4 float arrays
should be in the range 0.0 to 1.0. MxN arrays are mapped
to colors based on the `norm` (mapping scalar to scalar)
and the `cmap` (mapping the normed scalar to a color).