Python 如何使用matplotlib创建圆形二维打印,其中函数取决于距图像中心的距离?
我有一个一维函数(如下图所示)。我检查了所有matplotlib教程,但找不到在2D绘图中绘制1D数据的解决方案,在2D绘图中,距离图像中心相同的所有点都具有相同的值 从这样的函数: 我想得到这样的东西:Python 如何使用matplotlib创建圆形二维打印,其中函数取决于距图像中心的距离?,python,function,matplotlib,plot,Python,Function,Matplotlib,Plot,我有一个一维函数(如下图所示)。我检查了所有matplotlib教程,但找不到在2D绘图中绘制1D数据的解决方案,在2D绘图中,距离图像中心相同的所有点都具有相同的值 从这样的函数: 我想得到这样的东西: 我曾尝试使用Axes3D和imshow,但它们需要的是(x,y)坐标,而不是r(距中心的距离)。谢谢 基本上,您需要在笛卡尔网格上计算函数。因此,不用半径r,func(r)调用函数,而是用网格节点x和y,func(sqrt(x**2+y**2))计算出的半径来调用函数。 import n
我曾尝试使用Axes3D和imshow,但它们需要的是(x,y)坐标,而不是r(距中心的距离)。谢谢 基本上,您需要在笛卡尔网格上计算函数。因此,不用半径
r
,func(r)
调用函数,而是用网格节点x
和y
,func(sqrt(x**2+y**2))计算出的半径来调用函数。
import numpy as np
import matplotlib.pyplot as plt
func = lambda r: np.sin(r)*np.exp(-r/10.)
r = np.linspace(0,50,151)
X,Y = np.meshgrid(np.linspace(-50,50,301),np.linspace(-50,50,301))
rad = lambda x,y: np.sqrt(x**2+y**2)
image = func(rad(X,Y))
fig, (ax,ax2) = plt.subplots(ncols=2)
ax.plot(r, func(r))
ax2.imshow(image, extent=[X.min(),X.max(),Y.min(),Y.max()])
plt.show()