如何扩大轮廓范围

时间:2017-02-16 13:32:51

标签: python-3.x matplotlib python-3.6

问题

下面的代码绘制了几乎我想要的等高线图。结果的问题是我不知道如何扩展绘制等高线(或颜色图的颜色)的范围。

我设置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()

contour plot, but without the wanted line range

如何定义轮廓线的显示范围?

非常感谢任何帮助。

1 个答案:

答案 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()