首页 > 解决方案 > 来自字符串的 Python 图形函数

问题描述

我正在尝试使用 matplotlib.pyplot 创建一个绘图仪,并希望绘制一个像字符串一样的函数

我的代码是:

import matplotlib.pyplot as mpl
import numpy as np

def plot2D(*args):
    mpl.grid(1)
    xAxis = np.arange(args[1],args[2],args[3])
    def xfunction(x,input):
        return eval(input)
    print(xfunction(5,args[0]))
    mpl.plot(xAxis,xfunction(xAxis,args[0]))
    mpl.show()

plot2D("1/(x)",-1,2,0.1)

我希望它绘制函数 1/x,但是当它看起来像这样(desmos)时它看起来像这样。我是否将字符串转换为错误的函数,或者 matplotlib 甚至可以用于绘制这样的函数,还是应该使用另一个库?我将如何绘制像 x**2 + y**2 = 1 这样的函数?或者像 sin(x!) 这样的函数?

标签: pythonmatplotlibgraphing

解决方案


该函数存在一个内在问题1/x:它没有在 0 中定义。现在,在您的代码中,不幸的是,范围内的值之一是 0,因此它会严重破坏整个事情。您所要做的就是更改最后一行代码以稍微移动范围,并增加步数以获得更准确的结果:plot2D("1/x",-1.01,2,0.02). 这是情节:而且效果很好 如果你想消除中间的讨厌的线,你必须更改代码以将图形分成两部分。


推荐阅读