天天看點

在Linux中使用matplotlib進行科學畫圖在Linux中使用matplotlib進行科學畫圖

如果你想要在linxu中獲得一個高效、自動化、高品質的科學畫圖的解決方案,應該考慮嘗試下matplotlib庫。matplotlib是基于python的開源科學測繪包,基于python軟體基金會許可證釋出。大量的文檔和例子、內建了python和numpy科學計算包、以及自動化能力,是作為linux環境中進行科學畫圖的可靠選擇的幾個原因。這個教程将提供幾個用matplotlib畫圖的例子。

<a target="_blank"></a>

支援衆多的圖表類型,如:bar,box,contour,histogram,scatter,line plots....

基于python的文法

內建numpy科學計算包

資料源可以是 python 的清單、鍵值對和數組

可定制的圖表格式(坐标軸縮放、标簽位置及标簽内容等)

可定制文本(字型,大小,位置...)

支援tex格式(等式,符号,希臘字型...)

與ipython相相容(允許在 python shell 中與圖表互動)

自動化(使用 python 循環建立圖表)

用python 的循環疊代生成圖檔

儲存所繪圖檔格式為圖檔檔案,如:png,pdf,ps,eps,svg等

基于python文法的matplotlib是其許多特性和高效工作流的基礎。世面上有許多用于繪制高品質圖的科學繪圖包,但是這些包允許你直接在你的python代碼中去使用嗎?除此以外,這些包允許你建立可以儲存為圖檔檔案的圖檔嗎?matplotlib允許你完成所有的這些任務。進而你可以節省時間,使用它你能夠花更少的時間建立更多的圖檔。

可以通過如下指令在debian或ubuntu中安裝matplotlib:

$ sudo apt-get install python-matplotlib

在fedora或centos/rhel環境則可用如下指令:

$ sudo yum install python-matplotlib

本教程會提供幾個繪圖例子示範如何使用matplotlib:

離散圖和線性圖

柱狀圖

餅狀圖

在這些例子中我們将用python腳本來執行mapplotlib指令。注意numpy和matplotlib子產品需要通過import指令在腳本中進行導入。

np為nuupy子產品的命名空間引用,plt為matplotlib.pyplot的命名空間引用:

import numpy as np

import matplotlib.pyplot as plt

第一個腳本,script1.py 完成如下任務:

建立3個資料集(xdata,ydata1和ydata2)

建立一個寬8英寸、高6英寸的圖(指派1)

設定圖畫的标題、x軸标簽、y軸标簽(字号均為14)

繪制第一個資料集:ydata1為xdata資料集的函數,用圓點辨別的離散藍線,辨別為"y1 data"

繪制第二個資料集:ydata2為xdata資料集的函數,采用紅實線,辨別為"y2 data"

把圖例放置在圖的左上角

儲存圖檔為png格式檔案

script1.py的内容如下:

xdata = np.arange(0, 10, 1)

ydata1 = xdata.__pow__(2.0)

ydata2 = np.arange(15, 61, 5)

plt.figure(num=1, figsize=(8, 6))

plt.title('plot 1', size=14)

plt.xlabel('x-axis', size=14)

plt.ylabel('y-axis', size=14)

plt.plot(xdata, ydata1, color='b', linestyle='--', marker='o', label='y1 data')

plt.plot(xdata, ydata2, color='r', linestyle='-', label='y2 data')

plt.legend(loc='upper left')

plt.savefig('images/plot1.png', format='png')

所畫之圖如下:

在Linux中使用matplotlib進行科學畫圖在Linux中使用matplotlib進行科學畫圖

第二個腳本,script2.py 完成如下任務:

建立一個包含1000個随機樣本的正态分布資料集。

設定圖的标題、x軸标簽、y軸标簽(字号均為14)

用samples這個資料集畫一個40個柱狀,邊從-10到10的柱狀圖

添加文本,用tex格式顯示希臘字母mu和sigma(字号為16)

儲存圖檔為png格式。

script2.py代碼如下:

mu = 0.0

sigma = 2.0

samples = np.random.normal(loc=mu, scale=sigma, size=1000)

plt.title('plot 2', size=14)

plt.xlabel('value', size=14)

plt.ylabel('counts', size=14)

plt.hist(samples, bins=40, range=(-10, 10))

plt.text(-9, 100, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=16)

plt.savefig('images/plot2.png', format='png')

結果見如下連結:

在Linux中使用matplotlib進行科學畫圖在Linux中使用matplotlib進行科學畫圖

第三個腳本,script3.py 完成如下任務:

建立一個包含5個整數的清單

建立一個寬6英寸、高6英寸的圖(指派1)

添加一個長寬比為1的軸圖

設定圖的标題(字号為14)

用data清單畫一個包含标簽的餅狀圖

儲存圖為png格式

腳本script3.py的代碼如下:

data = [33, 25, 20, 12, 10]

plt.figure(num=1, figsize=(6, 6))

plt.axes(aspect=1)

plt.title('plot 3', size=14)

plt.pie(data, labels=('group 1', 'group 2', 'group 3', 'group 4', 'group 5'))

plt.savefig('images/plot3.png', format='png')

結果如下連結所示:

在Linux中使用matplotlib進行科學畫圖在Linux中使用matplotlib進行科學畫圖

原文釋出時間:2015-02-11

本文來自雲栖合作夥伴“linux中國”