Python matplotlib等高线图对数颜色

2024-05-15 05:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对使用对数颜色缩放的等高线图有问题。我想手动指定级别。然而,Matplotlib以一种奇怪的方式绘制颜色条——标签放置得不好,只有一种颜色出现。这个想法是基于 http://adversus.110mb.com/?cat=8

有谁能帮我吗? 我使用最新的git存储库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

这是我最初的问题。。。


Tags: fromimportnormmatplotlibasnpfigplt
2条回答

看起来levels需要增加值。试着将它们改为:levels=[1e-3, 1e-2, 1e-1, 1e0],看看这是否解决了您的问题。

所以它很容易修复;你的级别顺序意味着最低级的级别最后被绘制,因此覆盖了所有的内容! 尝试:

axim    = ax.contourf(X,Y,Z,levels=[1e-3, 1e-2, 1e-1, 1e0],cmap=plt.cm.jet,norm = LogNorm())

相反,你应该得到想要的结果。

相关问题 更多 >

    热门问题