網站首頁 編程語言 正文
前言
最近開始學習數學了,有一些題目的函數圖像非常有特點,有一些函數圖像手繪比較麻煩,那么有沒有什么辦法做出又標準又好看的數學函數圖像呢?
答案是有很多的,有很多不錯的軟件都能畫出函數圖像,但是,我想到了Python的數據可視化。Python在近些年非?;馃幔跀祿治鲆约吧疃葘W習等方面得到廣泛地運用,其豐富的庫使其功能愈加強大。
這里我們使用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()
一元二次函數
# 一元二次函數圖像
x = np.arange(-10, 10, 0.1)
y = x * x
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元二次函數")
plt.plot(x, y)
plt.show()
指數函數
# 指數函數
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()
正弦函數
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()
余弦函數
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()
高級玩法
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()
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()
總結?
原文鏈接:https://blog.csdn.net/manchan4869/article/details/117295396
相關推薦
- 2023-04-08 C/C++如何實現兩矩陣相乘之模擬法_C 語言
- 2022-07-02 C++精要分析lambda表達式的使用_C 語言
- 2022-09-09 Go?http請求排隊處理實戰示例_Golang
- 2022-09-17 ASP.NET?Core實現AES-GCM加密算法_實用技巧
- 2022-02-23 C#使用log4net記錄日志_C#教程
- 2022-09-16 Python?docx庫刪除復制paragraph及行高設置圖片插入示例_python
- 2023-06-19 C++開放封閉原則示例解析_C 語言
- 2022-05-25 Tomcat配置JMX遠程連接的詳細操作_Tomcat
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支