學(xué)習(xí)安排(8月5日-8月6日)
1.主要學(xué)習(xí)視頻Week1
鏈接(http://www.xuetangx.com/courses/MITx/6_00_2x/2014_T2/about Week1)
2.輔助內(nèi)容:教材第11章繪圖以及類的進(jìn)一步擴(kuò)展
繪圖
“一圖勝千言”,圖通常更能直觀的表達(dá)信息。但很多程序仍然依賴文本信息與用戶交流,原因是在很多編程語言中,提供可視化數(shù)據(jù)太難。幸運(yùn)的是,在Python中非常簡單,Python有很多標(biāo)準(zhǔn)庫服務(wù)于可視化,包括Numpy, Scipy, MatPlotLib, PyLab等。
PyLab
PyLab是一個Python標(biāo)準(zhǔn)庫模塊,提供了MATLAB的很多功能。MATLAB是“一種高級的技術(shù)計(jì)算語言和交互環(huán)境,可以用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析和數(shù)值計(jì)算”。本章重點(diǎn)介紹PyLab繪制數(shù)據(jù)圖形的功能,在后面章節(jié)中,我們還會介紹一些關(guān)于PyLab的更高級的內(nèi)容。PyLab繪圖能力的完整用戶指南參見matplotlib.sourceforge.net/users/index.html。本章只提供若干繪圖示例,并解釋如何用代碼生成這些圖形。
import pylab
pylab.figure(1) #創(chuàng)建圖1
#pylab.plot的兩個參數(shù)必須是同樣長度的序列,第一個參數(shù)指定了X軸坐標(biāo),第二個指定了Y軸坐標(biāo)
pylab.plot([1,2,3,4], [1,2,3,4]) #在圖1上繪圖
pylab.figure(2) #創(chuàng)建圖2
pylab.plot([1,4,2,3], [5,6,7,8]) #在圖2上繪圖
#Pylab中有個概念叫作“當(dāng)前圖”,運(yùn)行pylab.figure(x)可以將當(dāng)前圖設(shè)置為第x個圖形,隨后的繪圖函數(shù)調(diào)用
#都會作用在這個圖上,直到再一次調(diào)用pylab.figure。所以寫入文件Figure-Addie.png的圖是第二張圖
pylab.savefig('Figure-Addie') #保存圖2
pylab.figure(1) #回到圖1
#繼續(xù)在圖1上繪圖,只使用了一個參數(shù),這個參數(shù)提供了Y值,相應(yīng)的X值默認(rèn)為由range(len([5, 6, 10, 3]))產(chǎn)生的序列。在本例中,就是0~3的整數(shù)
pylab.plot([5,6,10,3])
pylab.savefig('C:\\Users\\yuanq\\Documents\\Figure-Jane') #保存圖1
pylab.show() #在屏幕上顯示圖1和圖2
對于每條繪制的曲線:
- 可以指定標(biāo)題和坐標(biāo)軸。pylab.title指定標(biāo)題,pylab.xlabel、pylab.ylabel分別指定x軸和y軸
- plot都有一個可選的參數(shù),這個參數(shù)是一個格式化的字符串,表示圖形中曲線的顏色和線型,由一個顏色標(biāo)識符和一個線型標(biāo)識符組成,線型標(biāo)識符是可選的。格式化字符串的默認(rèn)值是'b-',表示一條藍(lán)色實(shí)線。如果想以黑色圓點(diǎn)繪制本金增長情況,應(yīng)該使用pylab.plot(values,'ko')替換pylab.plot (values)。如果想查看完整的顏色和線型標(biāo)識符列表,參見http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
- 使用關(guān)鍵字參數(shù)還可以改變圖形中的字體大小(fontsize)和線條寬度(linewidth)。
principal = 10000 #初始投資
interestRate = 0.05
years = 20
values = []
for i in range(years + 1):
values.append(principal)
principal += principal*interestRate
pylab.plot(values, 'ko',linewidth = 10)
pylab.title('5% Growth, Compounded Annually',
fontsize = 'xx-large')
pylab.xlabel('Years of Compounding', fontsize = 'x-small')
pylab.ylabel('Value of Principal ($)')
pylab.show()
我們也可以修改繪圖時的默認(rèn)值,這個操作稱為“ rc設(shè)置”(rc來源于Unix運(yùn)行時配置文件的擴(kuò)展名.rc)。這些默認(rèn)值保存在一個類似字典的變量中,可以使用pylab.rcParams訪問。rcParams中有很多設(shè)置項(xiàng)目,完整的列表參見http://matplotlib.org/users/customizing.html。如果你不想花費(fèi)精力對這些參數(shù)進(jìn)行單獨(dú)設(shè)置,可以使用一個預(yù)定義的樣式表,具體介紹參見http://matplotlib.org/users/style_sheets.html#style-sheets
#一些常用的rc設(shè)置
#設(shè)置線寬
pylab.rcParams['lines.linewidth'] = 4
#設(shè)置標(biāo)題字體大小
pylab.rcParams['axes.titlesize'] = 20
#設(shè)置坐標(biāo)軸標(biāo)簽字體大小
pylab.rcParams['axes.labelsize'] = 20
#設(shè)置X軸數(shù)字大小
pylab.rcParams['xtick.labelsize'] = 16
#設(shè)置Y軸數(shù)字大小
pylab.rcParams['ytick.labelsize'] = 16
#設(shè)置X軸刻度大小
pylab.rcParams['xtick.major.size'] = 7
#設(shè)置Y軸刻度大小
pylab.rcParams['ytick.major.size'] = 7
#設(shè)置標(biāo)記點(diǎn)大小,例如,表示點(diǎn)的圓圈大小
pylab.rcParams['lines.markersize'] = 10
#顯示圖例時,設(shè)置圖例中標(biāo)記點(diǎn)的數(shù)量
pylab.rcParams['legend.numpoints'] = 1