繁体   English   中英

绘制指数函数python

[英]Plotting exponential function python

尝试绘制指数函数时,得到线性图:

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

您确实不应该使用评估。 但是,撇开该问题,问题在于您正在传递两个值的元组作为x_range参数的参数。 这将创建一个x ,其值为: array([ 0, 100]) ,如果创建相应的y,则只有两个点,因此当然会得到一条线。 您想使用np.arange而不是np.array 但是,如果将元组传递给graph函数,则将元组传递给np.arange.时,需要将其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))

结果:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM