[英]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.