学习安排(8月5日-8月6日)
1.主要学习视频Week1
链接(http://www.xuetangx.com/courses/MITx/6_00_2x/2014_T2/about Week1)
2.辅助内容:教材第11章绘图以及类的进一步扩展
绘图
“一图胜千言”,图通常更能直观的表达信息。但很多程序仍然依赖文本信息与用户交流,原因是在很多编程语言中,提供可视化数据太难。幸运的是,在Python中非常简单,Python有很多标准库服务于可视化,包括Numpy, Scipy, MatPlotLib, PyLab等。
PyLab
PyLab是一个Python标准库模块,提供了MATLAB的很多功能。MATLAB是“一种高级的技术计算语言和交互环境,可以用于算法开发、数据可视化、数据分析和数值计算”。本章重点介绍PyLab绘制数据图形的功能,在后面章节中,我们还会介绍一些关于PyLab的更高级的内容。PyLab绘图能力的完整用户指南参见matplotlib.sourceforge.net/users/index.html。本章只提供若干绘图示例,并解释如何用代码生成这些图形。
import pylab
pylab.figure(1) #创建图1
#pylab.plot的两个参数必须是同样长度的序列,第一个参数指定了X轴坐标,第二个指定了Y轴坐标
pylab.plot([1,2,3,4], [1,2,3,4]) #在图1上绘图
pylab.figure(2) #创建图2
pylab.plot([1,4,2,3], [5,6,7,8]) #在图2上绘图
#Pylab中有个概念叫作“当前图”,运行pylab.figure(x)可以将当前图设置为第x个图形,随后的绘图函数调用
#都会作用在这个图上,直到再一次调用pylab.figure。所以写入文件Figure-Addie.png的图是第二张图
pylab.savefig('Figure-Addie') #保存图2
pylab.figure(1) #回到图1
#继续在图1上绘图,只使用了一个参数,这个参数提供了Y值,相应的X值默认为由range(len([5, 6, 10, 3]))产生的序列。在本例中,就是0~3的整数
pylab.plot([5,6,10,3])
pylab.savefig('C:\\Users\\yuanq\\Documents\\Figure-Jane') #保存图1
pylab.show() #在屏幕上显示图1和图2
对于每条绘制的曲线:
- 可以指定标题和坐标轴。pylab.title指定标题,pylab.xlabel、pylab.ylabel分别指定x轴和y轴
- plot都有一个可选的参数,这个参数是一个格式化的字符串,表示图形中曲线的颜色和线型,由一个颜色标识符和一个线型标识符组成,线型标识符是可选的。格式化字符串的默认值是'b-',表示一条蓝色实线。如果想以黑色圆点绘制本金增长情况,应该使用pylab.plot(values,'ko')替换pylab.plot (values)。如果想查看完整的颜色和线型标识符列表,参见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
- 使用关键字参数还可以改变图形中的字体大小(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()
我们也可以修改绘图时的默认值,这个操作称为“ rc设置”(rc来源于Unix运行时配置文件的扩展名.rc)。这些默认值保存在一个类似字典的变量中,可以使用pylab.rcParams访问。rcParams中有很多设置项目,完整的列表参见http://matplotlib.org/users/customizing.html。如果你不想花费精力对这些参数进行单独设置,可以使用一个预定义的样式表,具体介绍参见http://matplotlib.org/users/style_sheets.html#style-sheets
#一些常用的rc设置
#设置线宽
pylab.rcParams['lines.linewidth'] = 4
#设置标题字体大小
pylab.rcParams['axes.titlesize'] = 20
#设置坐标轴标签字体大小
pylab.rcParams['axes.labelsize'] = 20
#设置X轴数字大小
pylab.rcParams['xtick.labelsize'] = 16
#设置Y轴数字大小
pylab.rcParams['ytick.labelsize'] = 16
#设置X轴刻度大小
pylab.rcParams['xtick.major.size'] = 7
#设置Y轴刻度大小
pylab.rcParams['ytick.major.size'] = 7
#设置标记点大小,例如,表示点的圆圈大小
pylab.rcParams['lines.markersize'] = 10
#显示图例时,设置图例中标记点的数量
pylab.rcParams['legend.numpoints'] = 1