Supposons que j'ai deux tableaux 2D donnés ci-dessous pour lesquels je veux tracer contourf. Je tracerai les deux contourf en utilisant deux sous-parcelles.

import numpy as np
import matplotlib.pyplot as plt
a = np.array([
    [1, 2, 2],
    [0, 1, 2],
    [0, 0, 1],
])

b = np.array([
    [4, 5, 5],
    [3, 4, 5],
    [3, 3, 4],
])

Caractéristiques:

  • Je veux avoir une barre de couleurs dans chacune de mes sous-parcelles [Résolu].
  • Je veux que mes deux barres de couleurs aient des coches de 0 à 5 [Non résolu].
  • Je veux que les couleurs souhaitées dans les contours et les barres de couleurs reflètent la vraie plage de 0 à 5 [Résolu].

Actuellement, j'ai le code suivant qui résout deux des trois exigences.

z1lim = [0, 5]
levels = 5
ticks = np.linspace(*z1lim, levels)
fig, ax = plt.subplots(ncols=2, figsize=(16, 6)) 

# contourf 0
cntf0 = ax[0].contourf(
    a,
    cmap='viridis', 
    levels=levels, 
    vmin=z1lim[0],
    vmax=z1lim[1],
)
# colorbar 0
cbar0 = fig.colorbar(
    cntf0,
    ticks=ticks,
    ax=ax[0]
)


# contourf 1
cntf1 = ax[1].contourf(
    b,
    cmap='viridis', 
    levels=levels, 
    vmin=z1lim[0],
    vmax=z1lim[1],
)
# colorbar 1
cbar1 = fig.colorbar(
    cntf1,
    ticks=ticks,
    ax=ax[1]
)

Parcelles actuelles

En regardant les résultats actuels, je ne suis pas en mesure d'avoir les barres de couleur allant de 0 à 5. Ce serait formidable si quelqu'un pouvait me donner un code fonctionnel qui entraînerait des barres de couleur ayant les coches de 0 à 5.

0
Apoorv Agnihotri 4 févr. 2020 à 23:22

1 réponse

Meilleure réponse

Vous prenez 5 niveaux dans chaque parcelle, mais ne précisez pas où ils se trouvent. Par conséquent, une parcelle ne peut pas connaître l'autre. Assurez-vous d'utiliser les mêmes niveaux dans les deux cas :

import numpy as np
import matplotlib.pyplot as plt
a = np.array([ [1, 2, 2], [0, 1, 2], [0, 0, 1], ])
b = np.array([ [4, 5, 5], [3, 4, 5], [3, 3, 4], ])

z1lim = [0, 5]
levels = ticks = np.linspace(*z1lim, 11)

fig, ax = plt.subplots(ncols=2, figsize=(16, 6)) 

# contourf 0
cntf0 = ax[0].contourf( a, cmap='viridis',  levels=levels)
# colorbar 0
cbar0 = fig.colorbar( cntf0, ticks=ticks, ax=ax[0] )

# contourf 1
cntf1 = ax[1].contourf( b, cmap='viridis',  levels=levels)
# colorbar 1
cbar1 = fig.colorbar( cntf1, ticks=ticks, ax=ax[1] )

plt.show()

enter image description here

2
ImportanceOfBeingErnest 4 févr. 2020 à 21:54