簡體   English   中英

Python matplotlib等高線圖對數色標

[英]Python matplotlib contour plot logarithmic color scale

我使用對數顏色縮放對輪廓圖有問題。 我想手動指定水平。 然而,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

這是我原來的問題......

所以它很容易修復; 你的等級水平意味着最后一級被繪制,因此涵蓋了一切! 嘗試:

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

相反,你應該得到所需的結果。

看起來levels期望值增加。 嘗試將它們更改為: levels=[1e-3, 1e-2, 1e-1, 1e0]並查看是否能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM