대수 색 스케일링을 사용하여 contour-plot에 문제가 있습니다. 나는 수준을 손으로 지정하고 싶다. 그러나 Matplotlib은 이상한 방식으로 색상 막대를 그립니다. 레이블은 잘 배치되지 않고 단 하나의 색상 만 나타납니다. 아이디어는 을 기반으로합니다. http://adversus.110mb.com/?cat=8Python matplotlib 등고선도 로그 피겨 스케일
누가 저를 도울 수 있습니까? 나는 (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 버전 v1.1.0 개발자를 사용! 왜하기 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
이 있었다 내 원래의 문제 ...
감사합니다. - 두 번째 질문에 대답해도 될까요? – 7asd23hasd
@ 45z23dsa : LogNorm 설정의 간격은 레벨에서 기본 10으로 설정됩니다. 데이터가 ~ 1e-8까지 내려 가기 때문에 ~ 8 레벨로 끝납니다. 너는 너 자신 기초를 바꾸어서 이것을 주변에 얻을 수 있는다. 예 : lev2 = np.arange (np.floor (np.log2 (Z.min()) - 1), np.ceil (np.log2 (Z.max()) +1)'levs = np. power (2, lev_exp)'는'levels' 인수로 전달할 수있는 2 개의 기본 레벨을 제공합니다. 그러나 정확히 20 레벨을 얻으려면 비표준베이스를 사용해야합니다. – jmetz
친애하는 mutmmatron, 이것에 대해 조사해 주셔서 감사합니다! 그래서 내가 원하는 수준의 목록을 제공하는 것이 더 쉽습니다 ... 그래서 나는 두 가지 질문을 모두 해결되는 것으로 간주합니다! – 7asd23hasd