下面的代码绘制了几乎我想要的等高线图。结果的问题是我不知道如何扩展绘制等高线(或颜色图的颜色)的范围。
我设置colors = 'k'
以确保白色背景上没有线条消失。
我试图用CS.set_clim(0.01,0.4)
修改轮廓线范围。即使CS.set_clim(0.01,0.1)
也不会更改图像。我期望行> =。1消失。
import numpy as np
from scipy import stats as ss
from matplotlib import pyplot as plt
x, y = np.mgrid[-2.5:2.5:.01, -2.5:2.5:.01]
pos = np.dstack((x, y))
rv = ss.multivariate_normal([0.0, 0.0], [[1.0, 0.], [0., 1.]])
plt.figure()
CS = plt.contour(x, y, rv.pdf(pos), colors = 'k')
CS.set_clim(0.01,0.4)
plt.clabel(CS, inline=1, fontsize=10)
plt.show()
非常感谢任何帮助。
答案 0 :(得分:0)
我只是发表了kazemakase对我的问题发表评论的答案,所以我可以将其标记为已解决。
可以使用levels
中的plt.contour()
关键字设置级别。如果想要定期间隔轮廓线,你可以用例如
levels = [rv.pdf(q) for q in np.arange(2.0, 0.0, -0.1)]
。我使用负增量来计算PDF,因为绘图功能需要增加级别。
import numpy as np
from scipy import stats as ss
from matplotlib import pyplot as plt
x, y = np.mgrid[-2.5:2.5:.01, -2.5:2.5:.01]
pos = np.dstack((x, y))
rv = ss.multivariate_normal([0.0, 0.0], [[1.0, 0.], [0., 1.]])
levels = [rv.pdf(q) for q in np.arange(2.0, 0.0, -0.1)]
plt.figure()
CS = plt.contour(x, y, rv.pdf(pos), levels = levels)
plt.clabel(CS, inline=1, fontsize=10)
plt.show()