[英]Passing 3 arrays to matplotlib.pyplot.plot function in python
我注意到我写的代码有些不寻常,但我不明白。 问题出在 python 中的 plot 轮廓 plot 上。 这是我编写的代码(这是错误的,因为我必须通过plt.contour()
而不是plt.plot()
):
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def f(x,y):
return (x**2+y**2)/np.sqrt(x**2+y**2)
x=np.linspace(0,1,11)
y=np.linspace(0,1,11)
X,Y=np.meshgrid(x,y)
z=f(X,Y)
print(np.shape(z))
plt.plot(x,y,z)
plt.show()
现在,我认为这个程序会抛出一个错误,因为 x 和 y 是一维数组,而 z 是 11×11 数组。 然而,令我惊讶的是它没有。 相反,它绘制了如下所示的曲线:
我检查了官方文档,根据它,这个调用是完全允许的。 但是,麻烦的是我不知道代码实际上做了什么。 为什么曲线实际上如下图所示? 官方文档中没有提到对 function 的这种调用是如何工作的。 有人可以解释这段代码实际上做了什么吗? 我很难理解这一点。
这是您要尝试的 plot 吗?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def f(x,y):
return (x**2+y**2)/np.sqrt(x**2+y**2)
x=np.linspace(0,1,11)
y=np.linspace(0,1,11)
X,Y=np.meshgrid(x,y)
z=f(X,Y)
fig = plt.figure() #<----
ax = plt.axes(projection='3d') #<----
ax.contour3D(X, Y, z) #<----
plt.show()
关于缺少错误/警告:
为什么曲线实际上如下图所示?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.