脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 利用Python NumPy库及Matplotlib库绘制数学函数图像

利用Python NumPy库及Matplotlib库绘制数学函数图像

2022-11-29 11:12manchan4869 Python

最近开始学习数学了,有一些题目的函数图像非常有特点,下面这篇文章主要给大家介绍了关于利用Python NumPy库及Matplotlib库绘制数学函数图像的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

前言

最近开始学习数学了,有一些题目的函数图像非常有特点,有一些函数图像手绘比较麻烦,那么有没有什么办法做出又标准又好看的数学函数图像呢?

答案是有很多的,有很多不错的软件都能画出函数图像,但是,我想到了Python的数据可视化。Python在近些年非常火热,在数据分析以及深度学习等方面得到广泛地运用,其丰富的库使其功能愈加强大。

这里我们使用Python的NumPy库以及Matplotlib库进行绘图。

NumPy与Matplotlib

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

函数绘图

所需库函数语法

import 语句

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

import module1[, module2[,... moduleN]

from … import 语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

from modname import name1[, name2[, ... nameN]]

numpy.arange

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

参数说明:

参数 描述
start 起始值,默认为0
stop 终止值(不包含)
step 步长,默认为1
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

参数 描述
start 序列的起始值
stop 序列的终止值,如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
dtype ndarray 的数据类型

导入所需模块

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] #用来正常显示中文标签
plt.rcParams["axes.unicode_minus"] = False #用来正常显示负号

一元一次函数

# 一元一次函数图像
x = np.arange(-10, 10, 0.1)#生成等差数组
y = 2 * x
plt.xlabel("x")
plt.ylabel("y")
plt.title("一元一次函数")
plt.plot(x, y)
plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

一元二次函数

# 一元二次函数图像
x = np.arange(-10, 10, 0.1)
y = x * x
plt.xlabel("x")
plt.ylabel("y")
plt.title("一元二次函数")
plt.plot(x, y)
plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

指数函数

# 指数函数
x = np.arange(-10, 10, 0.1)
y = np.power(2, x)
plt.xlabel("x")
plt.ylabel("y")
plt.title("指数函数")
plt.plot(x, y)
plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

正弦函数

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.sin(x)
plt.xlabel("x")
plt.ylabel("y")
plt.title("正弦函数")
plt.plot(x, y)
plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

余弦函数

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.cos(x)
plt.xlabel("x")
plt.ylabel("y")
plt.title("余弦函数")
plt.plot(x, y)
plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

高级玩法

from pylab import *
import numpy
figure(figsize=(12,8), dpi=72)

# 创建一个新的 1 * 1 的子图,接下来的图样绘制在其中的第 1 块(也是唯一的一块)
subplot(1,1,1)

X = np.linspace(-np.pi*2, np.pi*2, 2048,endpoint=True)
C,S = np.cos(X), np.sin(X)

# 绘制余弦曲线,使用蓝色的、连续的、宽度为 1 (像素)的线条
plot(X, C,linewidth=1.5, linestyle="-",label="正弦")

# 绘制正弦曲线,使用绿色的、连续的、宽度为 1 (像素)的线条
plot(X, S,linewidth=1.5, linestyle="-",label="余弦")
legend(loc="upper left")
# 设置横轴的上下限
xlim(-4.5,4.5)

# 设置横轴记号
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r"$-pi$", r"$-pi/2$", r"$0$", r"$+pi/2$", r"$+pi$"])

yticks([-1, 0, +1],
       [r"$-1$", r"$0$", r"$+1$"])

# 设置纵轴的上下限
ylim(-1.5,1.5)

# 设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))
ax = gca()
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.xaxis.set_ticks_position("bottom")
ax.spines["bottom"].set_position(("data",0))
ax.yaxis.set_ticks_position("left")
ax.spines["left"].set_position(("data",0))

# savefig("sincosin.png",dpi=72) #以72dpi保存图像

# 在屏幕上显示
show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

fig = plt.figure(figsize=(12,8), dpi=72)
x = np.arange(-10, 10, 0.01)
arsinh = np.log(x+np.sqrt(x**2+1))
sinh=0.5*(e**x-e**(-x))
cosh=0.5*(e**x+e**(-x))

plt.plot(x, sinh,label="双曲正弦")
plt.plot(x, arsinh,label="反双曲正弦")
plt.plot(x, cosh,label="双曲余弦")

plt.legend(loc="upper left")

ylim(-10,10)

ax = gca()
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.xaxis.set_ticks_position("bottom")
ax.spines["bottom"].set_position(("data",0))
ax.yaxis.set_ticks_position("left")
ax.spines["left"].set_position(("data",0))

plt.show()

利用Python NumPy库及Matplotlib库绘制数学函数图像

总结 

到此这篇关于利用Python NumPy库及Matplotlib库绘制数学函数图像的文章就介绍到这了,更多相关Python绘制数学函数图像内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/manchan4869/article/details/117295396

延伸 · 阅读

精彩推荐
  • PythonPython DES加密实现原理及实例解析

    Python DES加密实现原理及实例解析

    这篇文章主要介绍了Python DES加密实现原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    X1ace4862020-07-17
  • PythonPandas中把dataframe转成array的方法

    Pandas中把dataframe转成array的方法

    下面小编就为大家分享一篇Pandas中把dataframe转成array的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Paul_Huang_201117232021-01-31
  • Python深入理解Python中的super()方法

    深入理解Python中的super()方法

    super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石...

    neon_5612020-12-19
  • Pythonpython MNIST手写识别数据调用API的方法

    python MNIST手写识别数据调用API的方法

    这篇文章主要介绍了python MNIST手写识别数据调用API的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    caichao084782021-03-26
  • PythonPython 深入了解opencv图像分割算法

    Python 深入了解opencv图像分割算法

    本文主要介绍了Python通过opencv实现图像分割的详细过程与代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...

    jinhuazhe20138272022-03-03
  • PythonPython脚本判断 Linux 是否运行在虚拟机上

    Python脚本判断 Linux 是否运行在虚拟机上

    这篇文章主要介绍了Python脚本判断 Linux 是否运行在虚拟机上,本文讲解了判断 OpenVZ/Xen PV/UML、判断 VMware/Xen HVM/KVM、判断 VirtualBox/Virtual PC等方法,需要的朋友...

    脚本之家3052020-06-13
  • PythonPython运行不显示DOS窗口的解决方法

    Python运行不显示DOS窗口的解决方法

    今天小编就为大家分享一篇Python运行不显示DOS窗口的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    GlassyBug9772021-04-12
  • Python答题辅助python代码实现

    答题辅助python代码实现

    这篇文章主要为大家详细介绍了答题辅助python代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    懒企鹅9982021-01-05