如何扩展轮廓的范围
How to extent the range of contours
问题
下面的代码几乎按照我的意愿绘制了等高线图。结果的问题是我不知道如何扩展绘制等高线(或彩色地图的颜色)的范围。
我设置 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()
如何定义等高线的显示范围?
非常感谢任何帮助。
我只是 post kazemakase 在对我的问题的评论中给出的答案,所以我可以将其标记为已解决。
可以使用 plt.contour()
中的 levels
关键字设置级别。如果想要规则间隔的轮廓线,您可以使用例如计算它们
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()
问题
下面的代码几乎按照我的意愿绘制了等高线图。结果的问题是我不知道如何扩展绘制等高线(或彩色地图的颜色)的范围。
我设置 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()
如何定义等高线的显示范围?
非常感谢任何帮助。
我只是 post kazemakase 在对我的问题的评论中给出的答案,所以我可以将其标记为已解决。
可以使用 plt.contour()
中的 levels
关键字设置级别。如果想要规则间隔的轮廓线,您可以使用例如计算它们
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()