如果你想要在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')
所畫之圖如下:
第二個腳本,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')
結果見如下連結:
第三個腳本,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')
結果如下連結所示:
原文釋出時間:2015-02-11
本文來自雲栖合作夥伴“linux中國”