Próbuję wykonać kontur konturu o zdefiniowanych poziomach i normie logu. Poniżej znajduje się przykład:wykres konturu matplotlib z lognormem - poziomy paska kolorów
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 = 10 * (Z1* Z2)
fig=plt.figure()
ax1 = fig.add_subplot(111)
lvls = np.logspace(-4,0,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()
moje pytania to:
poziomy powinny być zapisane w formacie: '1x10^-4', '1.6x10^-4', ... Jak to zrobić zrobić to bez ręcznego określania każdego poziomu?
Używam Pythona 2.7.3 z matplotlib 1.1.1 na Windows 7.
Spróbuj wyszukać [tutaj] (http://stackoverflow.com/questions/5748076/python-matplotlib-contour-plot-logarithmic-color-scale) lub [tutaj] (http: //matplotlib.1069221.n5. nabble.com/logarithmic-scale-of-colorbar-with-ticks-and-custom-labels-td21663.html). – wflynny
w zależności od tego, jak mają być oznaczane poziomy, sprawdź [tę odpowiedź] (http://stackoverflow.com/questions/16529038/matplotlib-tick-axis-notation-with-superscript/16530841#16530841) – Schorsch
Dzięki za odpowiedzi. To rozwiązałoby pytanie 1. Czy masz pomysł na pytanie 2? – user2145054