python - 绘制指数函数python

标签 python matplotlib

我在尝试绘制指数函数时得到一个线性图:

import math
import numpy as np
import matplotlib.pyplot as plt

def graph(formula, x_range):
   x = np.array(x_range)
   y = eval(formula)
   plt.plot(x, y)

graph('100*(np.power(0.8, x))', (0,100))

我做错了什么? output_image

最佳答案

你真的不应该使用 EVAL。但是,撇开这个问题不谈,问题是您要传递一个包含两个值的元组作为 x_range 参数的参数。这是创建一个 x,其值为:array([ 0, 100]),如果您创建相应的 y,那么您当然只有两个点你会得到一条线。您想使用 np.arange 而不是 np.array。但是,如果您将一个元组传递给您的 graph 函数,您将需要在将它传递给 np.arange 时解压该元组。 所以这应该有效:

def graph(formula, x_range):
   x = np.arange(*x_range)
   y = eval(formula)
   plt.plot(x, y)

不过说真的,为什么不传递一个函数而不是 eval

def graph(func, x_range):
   x = np.arange(*x_range)
   y = func(x)
   plt.plot(x, y)

graph(lambda x: 100*(np.power(0.8, x)), (0,100))

结果:

enter image description here

关于python - 绘制指数函数python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38089954/

相关文章:

python - 根据模板编号将数字格式化为字符串

python - 文件选择器打开时无需单击子窗口上的按钮

python - 警告 : QT_DEVICE_PIXEL_RATIO is deprecated

python - 将多条线绘制到单个 Python 图形上

python - '无法计算 Pack,因为输入 #1(从零开始)预计是浮点张量,但实际上是 int32 张量 [Op :Pack] name: packed'. tf.squeeze 错误

python - 使用 matplotlib.pyplot.imshow() 时如何确定颜色?

python - 当 nan 在列表中排在第一位时 matplotlib 问题

python - TKinter 中的不同窗口

python - 用于情感分析的短语语料库

python - Plotly-Dash 并排堆叠条形图响应下拉列表