seismic pylab get_cmap examples cmap python matplotlib imshow

python - get_cmap - pylab cm seismic



Ajuste de líneas de cuadrícula y garrapatas en matplotlib imshow (3)

Estoy intentando trazar una matriz de valores y me gustaría agregar líneas de cuadrícula para aclarar el límite entre los valores. Desafortunadamente, imshow decidió ubicar las marcas de verificación en el medio de cada vóxel. Es posible que

a) quite las garrapatas pero deje la etiqueta en la misma ubicación y
b) agregar cuadrículas entre los límites de píxeles?

import matplotlib.pyplot as plt import numpy as np im = plt.imshow(np.reshape(np.random.rand(100), newshape=(10,10)), interpolation=''none'', vmin=0, vmax=1, aspect=''equal''); ax = plt.gca(); ax.set_xticks(np.arange(0, 10, 1)); ax.set_yticks(np.arange(0, 10, 1)); ax.set_xticklabels(np.arange(1, 11, 1)); ax.set_yticklabels(np.arange(1, 11, 1));

Imagen sin la línea de cuadrícula y con marcas en la ubicación incorrecta

ax.grid(color=''w'', linestyle=''-'', linewidth=2)

Imagen con líneas de cuadrícula en la ubicación incorrecta:


Código para la solución según lo sugerido por Serenity:

plt.figure() im = plt.imshow(np.reshape(np.random.rand(100), newshape=(10,10)), interpolation=''none'', vmin=0, vmax=1, aspect=''equal''); ax = plt.gca(); ax = plt.gca(); # Major ticks ax.set_xticks(np.arange(0, 10, 1)); ax.set_yticks(np.arange(0, 10, 1)); # Labels for major ticks ax.set_xticklabels(np.arange(1, 11, 1)); ax.set_yticklabels(np.arange(1, 11, 1)); # Minor ticks ax.set_xticks(np.arange(-.5, 10, 1), minor=True); ax.set_yticks(np.arange(-.5, 10, 1), minor=True); # Gridlines based on minor ticks ax.grid(which=''minor'', color=''w'', linestyle=''-'', linewidth=2)

Imagen resultante:


Trate de cambiar las garrapatas de los ejes:

ax = plt.gca() ax.set_xticks(np.arange(-.5, 10, 1)) ax.set_yticks(np.arange(-.5, 10, 1)) ax.set_xticklabels(np.arange(1, 12, 1)) ax.set_yticklabels(np.arange(1, 12, 1))


Uno puede encontrar más fácil usar plt.pcolor o plt.pcolormesh :

data = np.random.rand(10, 10) plt.pcolormesh(data, edgecolors=''k'', linewidth=2) ax = plt.gca() ax.set_aspect(''equal'')

Sin embargo, hay algunas diferencias entre ellos y plt.imshow , la más obvia es que la imagen es intercambiada por el eje Y. Para más información, consulte aquí: ¿ Cuándo usar imshow sobre pcolormesh?