我对使用对数颜色缩放的等高线图有问题。我想手动指定级别。然而,Matplotlib以一种奇怪的方式绘制颜色条--标签没有放置好,并且只显示一种颜色。这个想法是基于http://adversus.110mb.com/?cat=8
外面有没有人能帮我?我使用最新的git-repository matplotlib版本,v1.1.0 (2011-04-21)
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.mlab import bivariate_normal
from matplotlib.colors import LogNorm
from matplotlib.backends.backend_pdf import PdfPages
delta = 0.5
x = np.arange(-3.0, 4.001, delta)
y = np.arange(-4.0, 3.001, delta)
X, Y = np.meshgrid(x, y)
Z = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#axim = ax.imshow(Z, norm = LogNorm())
axim = ax.contourf(X,Y,Z,levels=[1e0,1e-1,1e-2,1e-3],cmap=plt.cm.jet,norm = LogNorm())
cb = fig.colorbar(axim)
pp = PdfPages('fig.pdf')
pp.savefig()
pp.close()
plt.show()非常感谢您的帮助!它工作完美,正如你所建议的.然而,我有另一个问题:为什么matplotlib不允许我选择对数模式下的水平线数:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.mlab import bivariate_normal
from matplotlib.colors import LogNorm
from matplotlib.backends.backend_pdf import PdfPages
delta = 0.5
x = np.arange(-3.0, 4.001, delta)
y = np.arange(-4.0, 3.001, delta)
X, Y = np.meshgrid(x, y)
Z = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#axim = ax.imshow(Z, norm = LogNorm())
#axim = ax.contourf(X,Y,Z,levels=[1e-3,1e-2,1e-1,1e0],cmap=plt.cm.jet,norm = LogNorm())
axim = ax.contourf(X,Y,Z,20,cmap=plt.cm.jet,norm = LogNorm())
cb = fig.colorbar(axim)
pp = PdfPages('fig.pdf')
pp.savefig()
pp.close()
plt.show()http://i.stack.imgur.com/VeVFQ.png
这是我最初的问题。
发布于 2011-04-22 02:23:48
所以它很容易修复;您的级别顺序意味着最低级别在最后绘制,因此覆盖了所有内容!尝试:
axim = ax.contourf(X,Y,Z,levels=[1e-3, 1e-2, 1e-1, 1e0],cmap=plt.cm.jet,norm = LogNorm())相反,你应该会得到想要的结果。
发布于 2011-04-22 02:21:14
看起来levels期望不断增长的价值。尝试将它们更改为:levels=[1e-3, 1e-2, 1e-1, 1e0],看看这是否解决了您的问题。
https://stackoverflow.com/questions/5748076
复制相似问题