cmap - rgb image python
Desactivar ejes en subplots (2)
Tengo el siguiente código:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm
img = mpimg.imread("lena.jpg")
f, axarr = plt.subplots(2, 2)
axarr[0,0].imshow(img, cmap = cm.Greys_r)
axarr[0,0].set_title("Rank = 512")
rank = 128
new_img = prune_matrix(rank, img)
axarr[0,1].imshow(new_img, cmap = cm.Greys_r)
axarr[0,1].set_title("Rank = %s" %rank)
rank = 32
new_img = prune_matrix(rank, img)
axarr[1,0].imshow(new_img, cmap = cm.Greys_r)
axarr[1,0].set_title("Rank = %s" %rank)
rank = 16
new_img = prune_matrix(rank, img)
axarr[1,1].imshow(new_img, cmap = cm.Greys_r)
axarr[1,1].set_title("Rank = %s" %rank)
plt.show()
Sin embargo, el resultado es bastante feo debido a los valores en los ejes:
¿Cómo puedo desactivar los valores de los ejes para todas las subparcelas simultáneamente?
Puede desactivar los ejes siguiendo los consejos del comentario de Veedrac (enlazando here ) con una pequeña modificación.
En lugar de usar plt.axis(''off'')
, debe usar ax.axis(''off'')
donde ax
es un objeto matplotlib.axes
. Para hacer esto para su código, simplemente necesita agregar axarr[0,0].axis(''off'')
y así sucesivamente para cada una de sus subparcelas.
El siguiente código muestra el resultado ( prune_matrix
parte prune_matrix
porque no tengo acceso a esa función, en el futuro, envíe el código que funcione completamente ) .
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm
img = mpimg.imread("stewie.jpg")
f, axarr = plt.subplots(2, 2)
axarr[0,0].imshow(img, cmap = cm.Greys_r)
axarr[0,0].set_title("Rank = 512")
axarr[0,0].axis(''off'')
axarr[0,1].imshow(img, cmap = cm.Greys_r)
axarr[0,1].set_title("Rank = %s" % 128)
axarr[0,1].axis(''off'')
axarr[1,0].imshow(img, cmap = cm.Greys_r)
axarr[1,0].set_title("Rank = %s" % 32)
axarr[1,0].axis(''off'')
axarr[1,1].imshow(img, cmap = cm.Greys_r)
axarr[1,1].set_title("Rank = %s" % 16)
axarr[1,1].axis(''off'')
plt.show()
Nota: para desactivar solo el eje x o y puede usar set_visible()
por ejemplo:
axarr[0,0].xaxis.set_visible(False) # Hide only x axis
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 2)
Para desactivar los ejes de todas las subparcelas, haga lo siguiente:
[axi.set_axis_off() for axi in ax.ravel()]
o
map(lambda axi: axi.set_axis_off(), ax.ravel())