首页 > 系统服务 > 详细

[Machine Learning]matplotlib

时间:2015-11-17 18:27:44      阅读:415      评论:0      收藏:0      [点我收藏+]

matplotlib是python最著名的绘图库,它提供了一整套和MATLAB类似的绘图函数集。

一. 快速绘图

1. 使用pyplot模块绘图

pyplot模块提供了快速绘制二维图表的API,例子:

 1 # -*- coding: utf-8 -*-
 2 """
 3 绘制简单的曲线。
 4 """
 5 import numpy as np
 6 import matplotlib.pyplot as plt #导入pyplot模块 
 7 
 8 x = np.linspace(0, 10, 1000)
 9 y = np.sin(x)
10 z = np.cos(x**2)
11 
12 #创建一个Figure对象, figsize指定Figure对象的宽度和高度, 单位英寸
13 plt.figure(figsize=(8,4))
14 
15 # 调用plot()函数在当前Figure对象上绘图
16 # 指定X, Y轴数据
17 # label: 给曲线指定一个标签名称, 前后的‘$‘使标签用LaTex引擎来显示文字
18 # color: 曲线的颜色
19 # linewidth(lw):  曲线宽度
20 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
21 
22 # 使用"b--"指定曲线的颜色和线型,b表示蓝色, ‘--‘表示虚线
23 plt.plot(x,z,"b--",label="$cos(x^2)$")
24 # X, Y轴标题文字
25 plt.xlabel("Time(s)")
26 plt.ylabel("Volt")
27 
28 # 标题
29 plt.title("PyPlot First Example")
30 
31 # Y轴范围
32 plt.ylim(-1.2,1.2)
33 
34 # 显示图示, 即图中表示每条曲线的标签和样式的矩形区域
35 plt.legend()
36 
37 # 显示绘图窗口
38 plt.show()

技术分享

                              PyPlot First Example的显示效果
可以调用savefig()批量保存图片:
1 plt.savefig("test.png", dpi=120)

2. 以面向对象方式绘图

matplotlib所绘制的图标中每一个绘图元素都是一个对象:

1 #获取当前图标, Get Current Figure
2 fig = plt.gcf()
3 #获取当前子图,Get Current Axes
4 axes = plt.gca()

3. 配置属性

使用matplotlib绘制的图表的每个组成部分都和一个对象对应,可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()来设置它们的属性值。

1 x = np.arange(0, 5, 0.1)
2 line = plt.plot(x, x * x)[0]
3 line.set_antialiased(False) #取消反锯齿效果
1 # 同时绘制正弦余弦曲线
2 lines = plt.plot(x, np.sin(x), x, np.cos(x))
3 # 同时配置多个对象的属性
4 plt.setp(lines, color= r, linewidth = 2.0)

可以用get_*()和plt.getp()获取对象属性。

4. 绘制多个子图

一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘制区域(子图)。可以用subplot()快速绘制包含多个子图的图表:

1 # 图表的整个绘制区域被等分为numRows行和numCols列
2 # plotNum参数指定创建的Axes对象所在的区域
3 subplot(numRows, numCols, plotNum)
1 for idx, color in enumerate("rgbyck"):
2    plt.subplot(321 + idx, axisbg = color)
3 plt.show()

技术分享

如果希望某个子图占据整行或者整列:

1 plt.subplot(221)
2 plt.subplot(222)
3 plt.subplot(212)
4 plt.show()

技术分享

 subplot()返回所创建的Axes对象,可以保存起来,然后用sca()交替让它们成为当前Axes对象:

 1 #-*- coding:utf8
 2 import numpy as np
 3 import matplotlib.pyplot as plt 
 4 
 5 plt.figure(1) # 创建图表1
 6 plt.figure(2) # 创建图表2
 7 ax1 = plt.subplot(211) # 在图表2中创建子图1
 8 ax2 = plt.subplot(212) # 在图表2中创建子图2
 9 
10 x = np.linspace(0, 3, 100)
11 for i in xrange(5):
12     plt.figure(1) # 选中图表1
13     plt.plot(x, np.exp(i * x / 3)) 
14     plt.sca(ax1) # 在图表2中选中子图1
15     plt.plot(x, np.sin(i * x)) 
16     plt.sca(ax2) # 在图表2中选中子图2
17     plt.plot(x, np.cos(i * x)) 
18 
19 plt.show()

技术分享技术分享

 

[Machine Learning]matplotlib

原文:http://www.cnblogs.com/skycore/p/4971867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!