matplotlib tracé de contour: proportionnelle barre de couleur niveaux dans l'échelle logarithmique
Serait-il possible d'avoir des niveaux d'la barre de couleur en échelle logarithmique, comme dans l'image ci-dessous?
Voici un exemple de code où il pourrait être mis en œuvre:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm
delta = 0.025
x = y = np.arange(0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = plt.mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = plt.mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 1e6 * (Z1* Z2)
fig=plt.figure()
ax1 = fig.add_subplot(111)
lvls = np.logspace(0,4,20)
CF = ax1.contourf(X,Y,Z,
norm = LogNorm(),
levels = lvls
)
CS = ax1.contour(X,Y,Z,
norm = LogNorm(),
colors = 'k',
levels = lvls
)
cbar = plt.colorbar(CF, ticks=lvls, format='%.4f')
plt.show()
Je suis à l'aide de python 2.7.3 avec matplotlib 1.1.1 sur Windows 7.
- Votre barre de couleur a déjà une échelle logarithmique.
- Je crois que les OP se demande comment définir la tique locator et formateur sur la barre de couleur pour afficher les étiquettes régulièrement des intervalles d'enregistrement.
- Ah, il me semblait rappeler que les OP dans son question voulait le les graduations pour être placé à l'valeurs données dans le tableau
lvls
avec logarithmique espacement, mais j'ai peut-être misundertood ce qu'il voulait dire. Merci pour ça. - Vous pouvez probablement faire quelque chose avec
matplotlib.colors.LogNorm()
similaire à cette réponse
InformationsquelleAutor user2145054 | 2013-08-12
Vous devez vous connecter pour publier un commentaire.
Je propose de générer un pseudo barre de couleur comme suit (voir les commentaires pour plus d'explications):
Cela vous donnera une intrigue comme ceci:
MODIFIER
Ou, utiliser quelque chose qui ressemble à de nouveaux niveaux et de la
spacing='proportional'
option lors de l'appel de lacolorbar
:remplacer cette ligne:
avec ces:
remplacer cette ligne:
avec ceci:
Et vous allez vous retrouver avec cette intrigue:
(le
format
a été changé, parce que la nouvelle tiques ne nécessitent pas de 4 décimales)EDIT 2
Si vous voulais pour générer automatiquement les niveaux, comme ceux que j'ai utilisé, vous pouvez considérer ce morceau de code: