No representar medio píxel con Matplotlib
Oct 30 2020
¿Alguien sabe si es posible no representar la mitad de los píxeles de la matriz diagonal usando plt.imshow()?
Esto se expresa gráficamente lo que estoy buscando:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
import matplotlib
bins = 5
Z = np.random.rand(bins, bins)
# Select lower triangle values:
condition = np.tril(np.ones((Z.shape))).astype(np.bool)
Z = np.where(condition, Z, np.nan)
fig, ax = plt.subplots(figsize = (8,8))
ax.imshow(Z, cmap = 'Spectral')
Supongo que esto podría hacerse cubriendo la imagen con una máscara , pero es una opción que prefiero evitar .
Respuestas
2 DizietAsahi Oct 30 2020 at 22:06
Puede utilizar un Patchobjeto como máscara de recorte en matplotlib. Verhttps://matplotlib.org/3.1.0/gallery/images_contours_and_fields/image_clip_path.html
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
import matplotlib
bins = 5
Z = np.random.rand(bins, bins)
# Select lower triangle values:
condition = np.tril(np.ones((Z.shape))).astype(np.bool)
Z = np.where(condition, Z, np.nan)
fig, ax = plt.subplots()
im = ax.imshow(Z, cmap = 'Spectral')
tri = matplotlib.patches.Polygon([(0,0),(1,0),(0,1)], closed=True, transform=ax.transAxes)
im.set_clip_path(tri)