首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制指数函数python

绘制指数函数python
EN

Stack Overflow用户
提问于 2016-06-29 11:36:21
回答 1查看 18.3K关注 0票数 2

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-29 11:48:27

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

代码语言:javascript
复制
def graph(formula, x_range):
   x = np.arange(*x_range)
   y = eval(formula)
   plt.plot(x, y)

不过,说真的,为什么不直接传递函数而不是eval呢?

代码语言:javascript
复制
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))

结果:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38089954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档