簡體   English   中英

Passing 3 arrays to matplotlib.pyplot.plot function in python

[英]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()

在此處輸入圖像描述


關於缺少錯誤/警告:

為什么曲線實際上如下圖所示?

詳細請看這里 matplotlib 中 plt.plot() 的第三個參數是做什么的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM