網站首頁 編程語言 正文
背景:
有些數學題目經常要用到數形結合思想,尤其是一些函數題目,如果能夠把函數圖像畫出來進行解題的話,思路會更加清晰明了。python繪圖主要用到matplotlib
繪圖模塊,平時我們看到的往往是下面這種圖
用一個實線矩形把幾何圖形封閉起來,看起來好像在一個象限里面。現實中,我們通常采用描點作圖,首先建立一個笛卡爾直角坐標系,然后根據一個自變量,一個因變量的在坐標系里面描一些點,然后用一條光滑曲線把這些點串起來,更像下面這種圖
那么,我們怎么才能利用matplotlib
模塊畫出上面的正弦函數呢?先看代碼,再聽分解
代碼:
import math import numpy as np #導入數值計算模塊 import matplotlib.pyplot as plt #導入繪圖模塊 import mpl_toolkits.axisartist as axisartist #導入坐標軸加工模塊 fig=plt.figure(figsize=(4,2)) #新建畫布 ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法創建一個繪圖區對象ax fig.add_axes(ax) #將繪圖區對象添加到畫布中 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=(2*math.pi,0) ,xytext=(2*math.pi,0.1)) #標注x軸 ax.annotate(s='y' ,xy=(0,1.0) ,xytext=(-0.5,1.0)) #標注y軸 plt.xlim(-6.3,6.3) #設置橫坐標范圍 plt.ylim(-1.1,1.1) #設置縱坐標范圍 ax.set_xticks([-2*math.pi,-math.pi,0,math.pi,2*math.pi]) #設置x軸刻度 ax.set_yticks([-1,1]) #設置y軸刻度 y=[] #用來存放函數值 x=np.linspace(-2*math.pi,2*math.pi,100) #構造橫坐標數據 for xi in x: #生成函數值 ? ? y.append(math.sin(xi))#追加 plt.plot(x,y,color="blue") #描點連線 plt.show() #出圖
代碼解讀:
工欲善其事必先利其器,畫坐標軸當然要用到坐標軸加工類 axisartist
,接下來就是用匠心精神不斷打磨坐標軸。
首先,隱藏原來的實線矩形
ax.axis[:].set_visible(False)
其次,添加自定義x軸和y軸
ax.axis["x"]=ax.new_floating_axis(0,0,axis_direction="bottom")? ax.axis["y"]=ax.new_floating_axis(1,0,axis_direction="bottom")?
接著,加箭頭,設置箭頭款式,并把坐標軸標注出來
ax.axis["x"].set_axisline_style("->",size=1.0)? ax.axis["y"].set_axisline_style("->",size=1.0)? ax.annotate(s='x' ,xy=(2*math.pi,0) ,xytext=(2*math.pi,0.1))? ax.annotate(s='y' ,xy=(0,1.0) ,xytext=(-0.5,1.0))?
修繕刻度和范圍:
plt.xlim(-6.3,6.3)? plt.ylim(-1.1,1.1)? ax.set_xticks([-2*math.pi,-math.pi,0,math.pi,2*math.pi])? ax.set_yticks([-1,1])?
到這里,一個比較好看的正弦函數圖像才算畫出來,邏輯上來說,要使得坐標軸的標注位置恰當,加標注操作應該在設置坐標軸范圍操作之后。
原文鏈接:https://blog.csdn.net/zengbowengood/article/details/102862072
相關推薦
- 2022-06-23 python基礎之while循環、for循環詳解及舉例_python
- 2022-05-11 如何在 CSS 中設置組件在瀏覽器屏幕水平垂直居中
- 2022-10-31 ?Go?語言實現?HTTP?文件上傳和下載_Golang
- 2022-06-19 基于Python實現音樂播放器的實現示例代碼_python
- 2024-02-17 自定義Matplotlib中的顏色映射(cmap)
- 2022-05-17 使用@async 注解,導致訪問RequestContextHolder獲取request為空
- 2022-05-21 React?組件中的state和setState()你知道多少_React
- 2022-10-24 C語言進程程序替換的實現詳解_C 語言
- 最近更新
-
- 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同步修改后的遠程分支