日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python matplotlib模块教程_Python中的Matplotlib模块入门教程

發布時間:2025/3/12 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python matplotlib模块教程_Python中的Matplotlib模块入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 關于 Matplotlib 模塊

Matplotlib 是一個由 John Hunter 等開發的,用以繪制二維圖形的 Python 模塊。它利用了 Python 下的數值計算模塊 Numeric 及 Numarray,克隆了許多 Matlab 中的函數, 用以幫助用戶輕松地獲得高質量的二維圖形。Matplotlib 可以繪制多種形式的圖形包括普通的線圖,直方圖,餅圖,散點圖以及誤差線圖等;可以比較方便的定制圖形的各種屬性比如圖線的類型,顏色,粗細,字體的大小等;它能夠很好地支持一部分 TeX 排版命令,可以比較美觀地顯示圖形中的數學公式。Matplotlib 掌握起來也很容易,由于 Matplotlib 使用的大部分函數都與 Matlab 中對應的函數同名,且各種參數的含義,使用方法也一致,這就使得熟悉 Matlab 的用戶使用起來感到得心應手。對那些不熟悉的 Matlab 的用戶而言,這些函數的意義往往也是一目了然的,因此只要花很少的時間就可以掌握。

Matplotlib 目前包含了37個不同的模塊, 如 matlab, mathtext, finance, dates

等等,其中與繪圖關系最直接的是 matlab 模塊。可以用下面的命令裝載并查看它提供的函數

>>> import matplotlib.matlab

>>> dir(matplotlib.matlab)

如果要了解模塊中某個函數的使用方法,可以使用 help 命令。如下面的命令

>>> help(legend)

>>> help(plot)

會返回 legend 和 plot 這兩個函數的信息。

本文擬通過一些實例來說明 matplotlib 的這些主要特點。相信通過閱讀這些例子,您能對 Matplotlib 的使用有一個基本的了解。

2 繪制一組冪函數

先從一個簡單的例子開始討論。假設要在一個圖形中顯示一組冪函數。這組冪函數的基不同,分別為10,自然對數 e 和2。可以用如下 Python 腳本去描繪這組曲線,生成的圖形如圖1所示。

from matplotlib.matlab import *

x = linspace(-4, 4, 200)

f1 = power(10, x)

f2 = power(e, x)

f3 = power(2, x)

plot(x, f1, 'r', x, f2, 'b', x, f3, 'g', linewidth=2)

axis([-4, 4, -0.5, 8])

text(1, 7.5, r'$10^x$', fontsize=16)

text(2.2, 7.5, r'$e^x$', fontsize=16)

text(3.2, 7.5, r'$2^x$', fonsize=16)

title('A simple example', fontsize=16)

savefig('power.png', dpi=75)

show()

圖1: 一組冪函數

程序的第一行裝載了 matlab 模塊。接下來的幾行語句(至 savefig 之前)好像是在運行 Matlab 程序,因為 linspace, power, plot,axis, text, title 這些函數在 Matlab 中也存在。這個例子展示了 Matplotlib 中幾個比較常用的繪圖函數,如 plot,axis,title 等的用法。其中 plot 是一個功能十分強大的函數, 通過改變它的參數選項,可以靈活地修改圖形的各種屬性,比如選用的線型,顏色,寬度等。

顯示圖形中的數學公式

Matplotlib 可以支持一部分 TeX 的排版指令,因此用戶在繪制含有數學公式的圖形時會感到很方便并且可以得到比較滿意的顯示效果,所需要的僅僅是一些 TeX 的排版知識。下面的這個例子顯示了如何在圖形的不同位置上, 如坐標軸標簽,圖形的標題以及圖形中適當的位置處,顯示數學公式。相應的 Python 程序如下, 生成的圖形見圖2。

from matplotlib.matlab import *

def? f(x, c):

m1 = sin(2*pi*x)

m2 = exp(-c*x)

return multiply(m1, m2)

x = linspace(0, 4, 100)

sigma = 0.5

plot(x, f(x, sigma), 'r', linewidth=2)

xlabel(r'$\rm{time}? \? t$', fontsize=16)

ylabel(r'$\rm{Amplitude} \ f(x)$', fontsize=16)

title(r'$f(x) \ \rm{is \ damping? \ with} \ x$', fontsize=16)

text(2.0, 0.5, r'$f(x) = \rm{sin}(2 \pi? x^2) e^{\sigma x}$', fontsize=20)

savefig('latex.png', dpi=75)

show()

圖2: 圖形中數學公式的顯示

從程序中可以看出,在 Matplotlib 中進行有關數學公式的排版是很簡單的。與 TeX 排版時的約定一樣,要插入的公式部分由一對美元符號 $ 來進行標識,而具體的排版命令與 TeX 一樣。在任何可以顯示文本的地方(如軸的標簽,標題處等)都可以插入需要的公式。需要注意的是,數學公式所在的字符串開始之處有一個標記 r,表示該字符串是一個 raw string。這是因為排版公式時,字符串所包含的內容必須按照 TeX 的規范,而不是其他的規范,來進行解析。所以使用 raw string 可以避免其它規則解釋字符串中某些特殊字符所帶來的歧義。從生成的圖形可以看到,公式顯示的效果是比較美觀的。

3 繪制其他格式的圖形

除了常用的線圖,Matplotlib 還可以繪制其他種類的圖形,如直方圖,餅圖,誤差線圖等等。下面是一個處理實驗數據的例子。它用直方圖的形式比較了實際測量電流和理論計算電流,同時還顯示了測量的誤差分布情況。程序首先讀取實驗數據 current.dat,獲得數據后利用函數 bar 進行繪圖。

from matplotlib.matlab import *

filename = "d:\\wei\\exp\\current.dat"

X = load(filename)

dp = X[:, 0]

i_mea = X[:, 1]

i_mea_err = X[:, 2]

i_cal = X[:, 3]

i_cal_err = X[:, 4]

width = 3

h1 = bar(dp, i_mea, width, color='r', yerr=i_mea_err)

h2 = bar(dp+width, i_cal, width, color='b', yerr=i_cal_err)

xlabel('Particle diameter (nm)', fontsize=16)

xticks(dp+width, dp)

ylabel('Signal current (nA)', fontsize=16)

title('Measured current vs. calculated current')

legend((h1[0], h2[0]), ('measured current', 'calculated current'), loc=2)

savefig('current.png', dpi=75)

show()

圖3 :測量電流 vs. 計算電流

從程序中可以看出,函數 load 極大地方便了數據文件的讀取工作(不需要自己寫代碼來處理數據文件了),它的輸出直接被傳遞至函數 bar 中,進而完成直方圖和誤差線圖的繪制。

4 GLP 集合計算結果的可視化

Python 是一種比較適合用來進行科學計算的腳本語言,如果利用了 Numeric 及 Numarray 模塊,它的計算能力還能得到進一步的增強。 Matplotlib 也充分利用了這兩個模塊,可以高質量地完成計算結果可視化的工作。下面是一個計算和顯示兩維好格子點 GLP (Good Lattice Point Set)集合的例子。 GLP 集合是一種用算法產生的偽隨機數的集合,它在一些優化計算中很有用,詳細的介紹可以在參考文獻里找到。下面的 Python 程序先定義了一個函數 glp(n1, n2) 用以產生需要的 GLP 集合, 接著利用 Matplotlib 來顯示它的分布情況(應該是均勻分布的)。

# A two dimensional GLP set

# with n1=377, n2=610

from matplotlib.matlab import *

def glp(n1, n2):

q = zeros((2, n2), Float)

h1 = 1; h2 = n1

for i in arange(n2-1):

q[0][ i] = (fmod(h1*(i+1), n2)-0.5)/n2

q[1][ i] = (fmod(h2*(i+1), n2)-0.5)/n2

q[0][n2-1] = (n2-0.5)/n2

q[1][n2-1] = (n2-0.5)/n2

return q

n1 = 377; n2 = 610

q = glp(n1, n2)

x = q[0, :]

y = q[1, :]

plot(x, y, 'r.', linewidth=2)

axis([0, 1, 0, 1])

title(r'$\rm{GLP \ set \ with} \ n_1 = 377, \ n_2 = 610$')

savefig('glp.png', dpi = 75)

show()

圖4: GLP 集合的分布

最初我們是用 Matlab 來完成這個工作的,現在用 Python 來實現一樣很簡潔。程序中函數 glp 的實現主要是利用了模快 Numeric,計算得到的結果用 plot 函數直接加以顯示,十分方便。這個例子(包括上一個例子)顯示了,在利用 Python 進行某些科學及工程計算時,Matplotlib 往往能簡潔高效地完成計算結果可視化的工作。

5 工作模式及圖形的輸出方式

最后簡單的介紹一下 Matplotlib 的工作模式以及輸出圖形的方式。Matplotlib 有兩種工作模式:交互模式 (interactive mode) 以及批處理模式 (batch mode)。很容易理解這兩種模式的差別。第一種模式就是在某個 Python Shell 的提示符下逐個運行繪圖的命令。

第二種模式是先把繪圖命令寫成一個腳本文件然后在適當的環境中執行這個文件。 最終圖形的輸出也有兩種方式,即 GUI 輸出方式和非 GUI 輸出方式。簡單地說,GUI 方式的輸出是把產生的圖形直接顯示在屏幕上;而非 GUI 方式的輸出則是把圖形保存為某種格式的文件,比如ps,png格式的文件。不論哪一種方式都與系統使用的 backend 有關 (backend 可以理解為后端的繪圖引擎)。與 GUI方式輸出有關的 backend 包括 WxPython, TkAgg, Tkinter 等。而與非 GUI 方式有關的 backend 包括 GD, PS,Paint 等。下圖總結了目前 Matplotlib 支持的主要backend。

圖5: Matplotlib 支持的主要 backend

用戶可以根據自己的實際需要選用其中的某種輸出方式,當然也可以兩種同時使用。以上的幾個例子都是同時使用了這兩種方式。以上幾個 Python 腳本的最后一行命令 show 負責把圖形在屏幕上顯示出來,而命令 savefig 會把圖形保存為相應格式的文件,目前缺省的輸出格式是 png 格式。

6 總結

作為一個仍在進行中的項目,Matplotlib 充分利用了 Python 下的 Numeric(Numarray) 模塊,提供了一種利用 Python 進行數據可視化的解決方案,進一步加強了 Python 用來進行科學計算的能力。Matplotlib 簡單易學,它克隆了眾多 Matlab 中的函數,這會讓了解 Matlab 的用戶受益不少。其他的特點還包括能夠繪制多種類型的圖形,可以簡單靈活對圖形的各種屬性進行修改,能比較美觀地顯示圖形中的數學公式。與其他的一些繪圖程序相比,如 Gnuplot,Matplotlib 的一個吸引人之處就是輸出圖形的質量較高。不足之處是 Matplotlib 的功能目前還不是很完善, 比如目前還不能支持三維繪圖,對 TeX 排版的支持還不充分等等。不過考慮到它是一個還在進行中的項目,這些就不應求全責備了。總的說來,如果您需要一種可視化的工具,并且希望它能有高質量的輸出效果,那么 Python 的 Matplotlib 模塊應該是一個值得考慮的選擇。

總結

以上是生活随笔為你收集整理的python matplotlib模块教程_Python中的Matplotlib模块入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 婷婷国产 | 国产午夜精品福利视频 | 绿帽人妻精品一区二区 | 欧美精品v国产精品v日韩精品 | 在线天堂在线 | 国产白嫩美女无套久久 | 好吊色一区二区三区 | 99精品视频在线观看 | 国产精品免费一区二区三区都可以 | 波多野结衣在线观看一区 | 能在线观看的av网站 | 国产欧美亚洲一区二区 | 无遮挡裸光屁屁打屁股男男 | 天天综合永久 | 亚洲无码精品国产 | 亚洲精品国产av | 亚洲3p| 国产免费一区二区三区视频 | 久久av在线播放 | 欧美1234区 | 蜜桃成人在线观看 | 久久精品一区二区 | 在线欧美 | 亚洲精品乱码久久久久久黑人 | 日韩在线第一 | 国产精品综合视频 | 欧美日本国产在线 | 成人午夜精品无码区 | 久久久久成人片免费观看蜜芽 | 人日人视频 | 亚洲一区网站 | 顶级嫩模啪啪呻吟不断好爽 | 综合网在线 | 亚洲国产精一区二区三区性色 | 亚洲精品一区二区三区影院忠贞 | 日韩av中文在线 | 玩弄人妻少妇500系列 | 国产精品人人爽 | 五月开心播播网 | 网友自拍第一页 | 国产日韩一区二区在线观看 | 午夜影院福利社 | 性开放视频 | 污视频91 | 美女擦边视频 | 亚洲AV永久无码国产精品国产 | 久久噜 | 成人美女视频 | 兄弟兄弟全集免费观看 | 国产男女猛烈无遮挡 | 欧美在线观看免费高清 | 91视频免费 | 日本人xxxⅹ18hd19hd | 国产麻豆免费观看 | 国产精品麻豆果冻传媒在线播放 | 91在线视频网址 | av老司机在线播放 | 天天操夜夜摸 | 极品人妻一区二区 | 这里只有久久精品 | 黄色av一区二区三区 | 性高潮在线观看 | 成片在线观看 | 成人污污www网站免费丝瓜 | 精品亚洲aⅴ无码一区二区三区 | 国产午夜一级 | 精品国产一二 | 青青草香蕉 | 狠狠夜夜| 成av人片一区二区三区久久 | 精品欧美久久 | 欧美日韩一区二区三区国产精品成人 | 欧美日韩一区二区在线播放 | 精品+无码+在线观看 | 日本激情一区二区三区 | 日韩美一区二区三区 | 国产999在线观看 | 强制高潮抽搐哭叫求饶h | 爱情岛论语亚洲入口 | 亚洲jizzjizz日本少妇 | 一级片一区二区三区 | 欧美午夜精品久久久久久蜜 | 成人三级在线播放 | 91黄在线观看 | 欧美黄色成人 | 91精品视频一区 | 午夜激情电影院 | 狼人伊人久久 | 激情五月综合 | 原来神马电影免费高清完整版动漫 | 国产精品人八做人人女人a级刘 | 国产精品白嫩极品美女视频 | 朝鲜黄色片 | 免费一级片 | 成人福利在线免费观看 | 亚洲精品成av人片天堂无码 | 蜜桃av一区| 国产偷亚洲偷欧美偷精品 | 久久午夜鲁丝片午夜精品 |