python绘制对数函数_python绘制对数函数
上一期,我们在探讨性质的时候,我们画了几个非常漂亮的图,这一期,就把画图的python放上来,设对数函数为
其中a>0,且a≠1。对应的指数函数为。现在来分a>1和0
(1) 当0 完整代码# -*- coding: utf-8 -*-
"""
Created on Mon Feb 17 17:32:49 2020
project name:draw_logarithm_figure
@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 logarithm_func(x, a=1/2): #定义指数函数
y=math.log(x, a)
return y
X=np.linspace(0.01, 4, 100) #构造自变量组
Y=[logarithm_func(x) for x in X] #求函数值
ax.plot(X, Y, label=r'$0) #绘制指数函数
ax.scatter(1, 0, color='red')
plt.legend()
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)+1, 0.3)) #标注x轴
ax.annotate(s='y', xy=(0, 1.0), xytext=(-0.2, max(Y)+1)) #标注y轴
plt.xlim(-1, 5) #设置横坐标范围
plt.ylim(-5, 3) #设置纵坐标范围
X_lim=np.arange(int(min(X)), max(X)+1, 1)
ax.set_xticks(X_lim) #设置x轴刻度
Y_lim=np.arange(-3, max(Y)+1, 1)
ax.set_yticks(Y_lim) #设置y轴刻度
ax.annotate(s=r'$y=log_a x$',xy=(1, 1), xytext=(1, 1)) #r'$y=(\frac{1}{2})^x$'效果图
0
(2)当a>1时 完整代码# -*- coding: utf-8 -*-
"""
Created on Mon Feb 17 17:32:49 2020
project name:draw_logarithm_figure
@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 logarithm_func(x, a=2): #定义指数函数
y=math.log(x, a)
return y
X=np.linspace(0.01, 4, 100) #构造自变量组
Y=[logarithm_func(x) for x in X] #求函数值
ax.plot(X, Y, label=r'$a>1$') #绘制指数函数
ax.scatter(1, 0, color='red')
plt.legend()
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)+1, 0.3)) #标注x轴
ax.annotate(s='y', xy=(0, 1.0), xytext=(-0.2, max(Y)+1)) #标注y轴
plt.xlim(-1, 5) #设置横坐标范围
plt.ylim(-5, 3) #设置纵坐标范围
X_lim=np.arange(int(min(X)), max(X)+1, 1)
ax.set_xticks(X_lim) #设置x轴刻度
Y_lim=np.arange(-3, max(Y)+1, 1)
ax.set_yticks(Y_lim) #设置y轴刻度
ax.annotate(s=r'$y=log_a x$',xy=(1, 1), xytext=(1, 1)) #r'$y=(\frac{1}{2})^x$'效果图
a>1 两个代码对比,可以看到,仅改了参数a的初始值和label标签,因为两个函数的定义域和值域是一致的。
对数函数vs指数函数
这两个函数虽然互为反函数,但是定义域和值域不一致,所以需要在定义函数的时候给出不同的自变量取值范围,否则会出现math domain error 。
完整代码# -*- coding: utf-8 -*-
"""
Created on Tue Feb 18 08:49:21 2020
project name:logarithm_vs_exponential
@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 logarithm_func(x, a=2): #定义指数函数
y=math.log(x, a)
return y
def exponential_func(x, a=2): #定义指数函数
y=math.pow(a, x)
return y
X=np.linspace(0.01, 4, 100) #构造自变量组
Y=[logarithm_func(x) for x in X] #求函数值
ax.plot(X, Y, label='对数函数') #绘制指数函数
ax.scatter(1, 0, color='red')
X1=np.linspace(-4, 4, 100)
Y1=[exponential_func(x) for x in X1]
ax.plot(X1, Y1, label='指数函数')
ax.scatter(0, 1, color='red')
ax.plot(X1, X1, color='green', label=r'$y=x$')
plt.legend(loc=2)
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)+1, 0.3)) #标注x轴
ax.annotate(s='y', xy=(0, 1.0), xytext=(-0.2, 5)) #标注y轴
plt.xlim(-5, 5) #设置横坐标范围
plt.ylim(-5, 5) #设置纵坐标范围
X_lim=np.arange(-4, 4, 1)
ax.set_xticks(X_lim) #设置x轴刻度
Y_lim=np.arange(-4, 4, 1)
ax.set_yticks(Y_lim) #设置y轴刻度效果图
a>1
只需要在定义指数函数和对数函数的时候给a赋予不同的参数便可出现不同的形状,下图是a=1/2 时的效果图
0
如果你不会写代码或者还有什么不懂的欢迎来“三行科创”微信公众号留言,同时交流群免费向大家开放,入群讲缘分。 参考文献
1,https://blog.csdn.net/zengbowengood/article/details/104338878
2,https://blog.csdn.net/zengbowengood/article/details/102862072
3,https://blog.csdn.net/zengbowengood/article/details/104360150
4,https://blog.csdn.net/zengbowengood/article/details/104260155
5,https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html
6,https://blog.csdn.net/qq_17528659/article/details/82152530
- - -The end- - -
17521754388
python绘制对数函数_python绘制对数函数相关推荐
- python turtle绘制柱状图_python绘制图形(Turtle模块)
用python的Turtle模块可以绘制很多精美的图形,下面简单介绍一下使用方法. 需要用到的工具有python,python 的安装这里就不再细说.自行搜索. from turtle import ...
- python彩色蟒蛇绘制方向_python绘制蟒蛇,绘制五彩蟒蛇
原博文 2019-05-06 23:26 − python绘制蟒蛇,绘制五彩蟒蛇 1.用Python绘制蟒蛇 from turtle import * setup(650,350,200,200) p ...
- python奥运五环_Python绘制奥运五环
绘制奥运五环主要涉及到Python中的turtle绘图库运用: turtle.forward(distance) 向当前画笔方向移动distance像素长度 turtle.backward(dista ...
- python如何绘制直线_python绘制直线的方法
本文实例为大家分享了python绘制直线的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python import vtk # 绘制通用方法 def myshow(linepoly ...
- python热力图背景_python 绘制场景热力图的示例
我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图. 下面以识别图片中的行人,并绘制热力图为例进行讲解. 步骤1:首先识别图像中的人,得到bounding ...
- python画正方体_python绘制立方体的方法
本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # This is (almost) a direct C++ to Pyt ...
- python七段数码管绘制秒表_Python绘制七段数码管实例代码
七段数码管(seven-segmentindicator)由7段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置 绘制模式: input:输入当前日期的数字形式 proc ...
- python 显示中文_Python|绘制个性化数据的动态图表及解决中文显示问题……
先安装各个库文件,以下为我的win10系统安装的Python版本及各个库文件的版本,安装命令如下: pip3 install 库文件名==版本号 -i https://pypi.tuna.tsingh ...
- python彩虹图_python绘制彩虹图
本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 from turtle import * #控制彩虹路径 def path(pen, r, g, b): pen.pen ...
最新文章
- 最长不下降子序列的O(n^2)算法和O(nlogn)算法
- 人事面试的那些问题及背后的考察点
- ACM: hihicoder #1174 : 拓扑排序·一 STL- queue
- 用python画出圣诞树_【闲趣】如何用python画出一棵圣诞树
- html5图片列表纵向,div css图片列表实例布局案例ul li布局
- api postmain 鉴权_API授权与验证 - 文档中心 - 快代理
- 家里的存款以每个月六千元人民币的速度增长,这能达到什么生活水平?
- pytorch学习笔记(五):线性回归的简洁实现
- Win7系统经常蓝屏故障处理过程及思路
- latex文字加粗、斜体
- uniapp开发微信公众号(h5)项目如何引入微信jssdk,分享,扫一扫
- 日拱一卒,功不唐捐 | 每日思考俱乐部 专栏更新通知
- Python中计算两个数据点之间的欧式距离,一个点到数据集中其他点的距离之和
- Kinect Fusion三维重建
- GameFramework篇:StarForce全解读(前言)
- PHP:Maze迷宫寻址算法(附完整源码)
- 《Python编程从入门到实践 第二版》第十八章练习
- 计算机科学 江西二本大学排名,江西大学排名_江西二本大学排名
- 2010显卡性能排行
- Ubuntu 更新软件命令