python绘制指数函数

python绘制指数函数

  • 完整代码

上一期,我们介绍了指数函数的形和性质以及运算法则,其中有两个非常漂亮的指数函数图就是用python的matplotlib画出来的。这一期,我们将要介绍如何利用python如何绘制出如下指数函数。

python绘制指数函数_第1张图片
我们知道当 0 < a < 1 00<a<1是,指数函数 y = a x y=a^x y=ax是单调递减的,当 a > 1 a>1 a>1时,是单调递增的,所以,我们首先要定义出指数函数

import math
...
def exponential_func(x, a): #定义指数函数
  y=math.pow(a, x)
  return y

然后,利用numpy构造出自变量 x x x,利用上面定义的指数函数来计算出因变量 y y y

X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值

有了自变量和因变量的一些散点,那么就可以模拟我们平时画函数操作——描点绘图,利用下面代码就会画出

import math 
import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

fig=plt.figure(figsize=(6,4)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中

def exponential_func(x, a=2): #定义指数函数
  y=math.pow(a, x)
  return y

X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
ax.plot(X, Y) #绘制指数函数
plt.show()

python绘制指数函数_第2张图片
虽然图1很简单,但是麻雀虽小五脏俱全,指数函数该有都有,接下来是如何让其看起来美观,这里重点介绍axisartist 坐标轴加工类,在画笛卡尔直角坐标系的时候我们已经用过了,这里就不再多说了。我们只需要在上面代码后面加上一些修改代码来将坐标轴好好打扮一番。
python绘制指数函数_第3张图片

完整代码

# -*- coding: utf-8 -*-
"""
Created on Sun Feb 16 10:19:23 2020
project name:
@author: 帅帅de三叔
"""
import math 
import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

fig=plt.figure(figsize=(6,4)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中

def exponential_func(x, a=2): #定义指数函数
  y=math.pow(a, x)
  return y

X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
ax.plot(X, Y) #绘制指数函数
plt.show()
# 从此处开始打扮
print(max(X), max(Y)) #测试一下自变量最大值和因变量最大值,为后面的坐标轴设置依据
ax.axis[:].set_visible(False) #隐藏原来的实线矩形
ax.axis["x"]=ax.new_floating_axis(0, 0, axis_direction="bottom") #添加x轴
ax.axis["y"]=ax.new_floating_axis(1, 0, axis_direction="bottom") #添加y轴

ax.axis["x"].set_axisline_style("-|>", size=1.0) #给x坐标轴加箭头
ax.axis["y"].set_axisline_style("-|>", size=1.0) #给y坐标轴加箭头

ax.annotate(s='x', xy=(max(X), 0), xytext=(max(X)+0.5, 0.5)) #标注x轴
ax.annotate(s='y', xy=(0, 1.0), xytext=(-0.5, max(Y)+0.5)) #标注y轴

plt.xlim(-4, 5) #设置横坐标范围
plt.ylim(-1, 17) #设置纵坐标范围
X_lim=np.arange(min(X), max(X)+1, 1)
ax.set_xticks(X_lim) #设置x轴刻度
Y_lim=np.arange(0, max(Y)+1, 1)
ax.set_yticks(Y_lim) #设置y轴刻度
ax.annotate(s=r'$y=a^x$',xy=(3, 10), xytext=(3, 10))

整个代码比较注重细节,如果你要画减函数,只需要将a的初始值设置到(0,1)之间的某个值即可。比如在定义函数的时候,令 a = 1 2 a=\frac{1}{2} a=21便会画出如下指数函数图
python绘制指数函数_第4张图片
相应的代码改写如下

def exponential_func(x, a=1/2): #定义指数函数
  y=math.pow(a, x)
  return y

参考文献
1,https://blog.csdn.net/zengbowengood/article/details/102862072
2,https://blog.csdn.net/zengbowengood/article/details/104260155

你可能感兴趣的:(数学工程,指数函数,python)