在python中绘制具有两个参数的双变量函数

2024-09-30 06:16:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个2变量函数,其中包含可以更改的附加参数。以下是功能-

f(x,y) = (x - a*y)/(b+y)

我想在3d中绘制它,并希望通过改变a和b的值,即当a=1和b=0时,看到绘图中的变化

我可以为特定的a和b情况绘制它,下面是适用于a=1和b=0的代码。对于a和b的不同情况,是否有任何方法不需要单独映射

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np

x = np.linspace(30,7000,10000)
y = np.linspace(1,11000, 10000)

def delCAD(x,y):
    return (x-y)/(y) # the function when a=1 and b=0

fig = plt.figure(figsize=(12,8))
ax = Axes3D(fig)
ax = fig.gca(projection = "3d")
surf = ax.plot_trisurf(x, y, delCAD(x,y), cmap = cm.coolwarm)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

Tags: fromimportmatplotlibasnpfig绘制情况
1条回答
网友
1楼 · 发布于 2024-09-30 06:16:11

我通常用IPython或Jupyter来做这类事情——也许这是你的选择?例如,使用ipywidgets.interact()

import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact


x = np.linspace(1, 20, 50)
y = np.linspace(1, 20, 50)

y, x = np.meshgrid(y, x) 

def delCAD(x, y, a=1, b=0):
    return (x - a * y) / (b + y)

@interact(a=(1, 10), b=(0, 10))
def plot(a, b):
    fig, ax = plt.subplots(subplot_kw={"projection": "3d"}, figsize=(12, 6))
    surf = ax.plot_trisurf(x.flat, y.flat, delCAD(x, y, a, b).flat, cmap='coolwarm')
    fig.colorbar(surf, ax=ax, shrink=0.5, aspect=5)
    ax.view_init(elev=30, azim=160)
    plt.show()
    return

产生以下结果:

Output of script

除了interact包装器之外,我还引入了meshgrid行来计算网格中的所有位置,并且我稍微更改了一些参数,以便您可以看到函数中的更多内容。我希望你能根据自己的需要拆开不同的部件

相关问题 更多 >

    热门问题