我有一个双变量函数
Z = m_1 m_2 / pow(m_1 + m_2, 2)
我想在Z
平面(轮廓)中为m_1 - m_2
绘制具有常量值的曲线。例如,Z=0.10, 0.15, 0.20, 0.25
。通过matplotlib在python中完成这项工作最简单的方法是什么?以下是我尝试过但它并不是我想要的。我期待不同的结果。我需要确定这是否正确。
def etta(m_1, m_2):
return m_1*m_2 / pow(m_1 + m_2, 2)
m_1 = linspace(4, 14, 100)
m_2 = linspace(4, 14, 100)
X,Y = meshgrid(m_1, m_2)
Z = etta(X, Y).T
print(sqrt(2))
fig, ax = plt.subplots()
cnt = contour(Z, cmap=cm.RdBu)
plt.show()
答案 0 :(得分:2)
也许这就是你想要的:
V = [0.10, 0.15, 0.20, 0.25]
cnt = plt.contour(X, Y, Z, V, cmap=cm.RdBu)
将以V
给出的值绘制线条。但问题是,您提供的值大多数不会显示在X
和Y
给出的域中。您可以通过查看imshow
的完整功能来看到这一点:
plt.imshow(Z, extent=(X.min(), X.max(), Y.min(), Y.max()), origin='lower', cmap=cm.RdBu)
增加V
中的值以查看更多行:
V = np.linspace(.1, .3, 25)
plt.contour(X,Y,Z,V, cmap=cm.RdBu)