繁体   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