web-dev-qa-db-fra.com

Colorplot de matplotlib tableau 2D

Donc, je pensais que cela allait être vraiment simple, mais j'ai eu beaucoup de difficulté à trouver exactement ce que je cherche dans un exemple compréhensible.

Fondamentalement, je veux faire des diagrammes de phase, donc si je dispose d’un tableau 2d, comment puis-je obtenir matplotlib pour le convertir en un tracé auquel je peux attacher des titres, des axes et des légendes (barres de couleur).

Je suis à la recherche d'une solution de base sans système d'exploitation extrêmement simple qui n'utilise que ce qui est nécessaire pour fonctionner avec n'importe quel tableau 2D.

Je suis certain que c'est simple et que je suis juste assez épais, mais j'ai vraiment beaucoup de difficulté avec ça.

J'ai utilisé les exemples, mais ils ne semblent pas très bien correspondre à ce que j'essaie de faire: j'aime l'aspect général de ce graphique, j'aimerais simplement pouvoir passer dans un 2dArray et avoir ce même résultat:

import numpy as np
import matplotlib as ml
import matplotlib.pyplot as plt

H = [[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,16]]

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
X,Y = np.meshgrid(xedges, yedges)
plt.pcolormesh(X, Y, H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()
30
Slater Victoroff

Je crains que votre exemple posté ne fonctionne pas, car X et Y ne sont pas définis. Donc, au lieu de pcolormesh, utilisons imshow:

import numpy as np
import matplotlib.pyplot as plt

H = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]])  # added some commas and array creation code

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
plt.imshow(H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()
41
heltonbiker

Voici l'exemple le plus simple contenant les lignes de code clés:

import numpy as np 
import matplotlib.pyplot as plt

H = np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12],
          [13, 14, 15, 16]])

plt.imshow(H)
plt.show()

enter image description here

15
user185160