Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用matplotlib创建圆形二维打印,其中函数取决于距图像中心的距离?_Python_Function_Matplotlib_Plot - Fatal编程技术网

Python 如何使用matplotlib创建圆形二维打印,其中函数取决于距图像中心的距离?

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

我有一个一维函数(如下图所示)。我检查了所有matplotlib教程,但找不到在2D绘图中绘制1D数据的解决方案,在2D绘图中,距离图像中心相同的所有点都具有相同的值

从这样的函数:

我想得到这样的东西:


我曾尝试使用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()