matplotlib画图

matplotlib是python中一个用于画图的一个包,在 matplotlib的主页上是这么介绍的:matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. 目前matplotlib的最新版本是0.99.1,可以进入他的官网进行下载:http://matplotlib.sourceforge.net/

使用matplotlib来画图已经很长时间了,零零碎碎的也积攒了很多小 tips,但是一直没怎么整理,在这个帖子里,我准备将平时所用到的小tips做一个小结,在以后也会不定期的进行更新。

首先介绍一下matplotlib中最常用的一个子模块,pyplot。这个包中 包含常用的绘制二维曲线的方法,也是实际中应用最多的一个字包。因此通常我们用matplotlib绘图的时候首先需要引入这个包,即

import matplotlib.pyplot as plt

下面介绍二维图中的常用的几个概念

figure:定义一个图片

fig = plt.figure()

axes:定义图片中的一块绘图区域,在实际作图中,通常使用下面的方法

ax = fig.add_subplot(111)  

可以将图片划分为几个绘图区域,括号中的三个数字分别表示将图片划分为几行、 几列,以及选取第几个绘图区域,因此,如下的语句表示,将图片划分为2行2列,供4个区域,ax是其中的第三个区域,注意在这里是按照行来数的,即图片的 左下角的区域。

ax = fig.add_subplot(223)

括号中的数字也可以用逗号隔开,即

ax = fig.add_subplot(2,2,3)

axis:表示绘图区域的一个坐标轴,有x轴和y轴之分,分别可以通过以下方法取 得

xaxis = ax.xaxis

yaxis = ax.yaxis

以上的三个概念是绘图中使用最多,大部分操作也是在其中完成的。

下面介绍一些经常使用到的一些操作。

1. 画二维曲线图

x = arange(0,5,0.1)

y = [math.sin(a) for a in x]

ax.plot(x,y,"ro-")

图片结果如图1所示,双引号里面的三个字符分别表示曲线颜色,点的形状,线的形 状。也可以用以下的方式显示指定:

ax.plot(x,y,color='r',linestyle='-',marker='o')

color的取值可以参见表1,或者使用RGB的值,即color= (1,0,0)。

linestyle与marker的取值可以参见表2,默认的线形为'-',点形 为'o'。如果只想表示散点图,可以使用

ax.plot(x,y,"ro")

或者

ax.plot(x,y,color='r',linestyle='',marker='o')

                   图1                                                         表1


                                                           表2

在实际中,我们可能经常会用到对数坐标轴,这时可以用下面的三个函数来实现

ax.semilogx(x,y)           #x轴为对数坐标轴

ax.semilogy(x,y)           #y轴为对数坐标轴

ax.loglog(x,y)              #双对数坐标轴

2. 图形标注

这个命令很简单,如果在plot语句中使用了label属性,那么使用 legend语句即可自动在图片中添加一个标注框,如下:

x = arange(0,5,0.1)

y = [math.sin(a) for a in x]

ax.plot(x,y,"ro-",label = "sin(x)")

y = [math.cos(a) for a in x]

ax.plot(x,y,"bx-",label = "cos(x)")

ax.legend()

程序运行结果如图2所示。

当然我们可以指定legend的位置,如下:

ax.legend(loc='lower left')

或者

ax.legend(loc=3)

location的可选参数见表3.


                           图2                                                                      表3

3. 坐标轴的标题

在图2中,我们使用下面语句来定义坐标轴标题

ax.set_xlabel("x")
ax.set_ylabel("sin(x),cos(x)")

4. 数学公式编辑

图2中的图形标签与坐标轴的标题都是用常规字体来显示的,那么很多时候我们希望它 们显示成数学公式的样子,或者有时候直接就需要编辑一个数学公式,里面可能包括一些拉丁字母或者数学符号等,这时候我们需要借助用:LaTex。

LaTex是一款排版软件,是编辑论文的常用工具,也可以处理日常生活中的各种文 档,如写信、写书、画表格,甚至做幻灯片。它和word的主要区别在于:word是“所见即所得”,而LaTex是“所想即所得”。在LaTex里编辑公 式是依靠一系列命令生成的。

当然在这里,我不准备将篇幅全部用于LaTex上面,感兴趣的朋友可以自己 google学习之。在matplotlib里面,也可以使用LaTex的命令来编辑公式,只需要在字符串前面加一个“r”即可,这里给大家看一个简单的 例子。

x = arange(1,1000,1)
r = -2
c = 5
y = [5*(a**r) for a in x]
ax.loglog(x,y,label = r"$y = c*x^{\gamma}, c=5,\gamma=-2$")
ax.legend()
ax.set_xlabel(r"x")
ax.set_ylabel(r"y")

程序执行结果如图3所示,这实际上是一个power-law的例子,有兴趣的朋友 可以继续google之。



                              图3

关于LaTex的更多命令,可以参见matplotlib的官方教程:

http://matplotlib.sourceforge.net/users/mathtext.html#mathtext-tutorial

5. 控制坐标轴的显示

前面所有的例子的坐标轴的所有显示(如最大值,最小值,间隔大小,显示方式等等) 都是使用的默认生成方式,而实际上,我们也可以用几句命令很方便的进行修改。下面用例子来说明吧:

x = arange(0,5,0.1)

y = [10*math.sin(a) for a in x]

ax.plot(x,y,"ro-",label = "sin(x)")

ax.set_xlim(1,4)                            # 设定x轴范围

ax.set_ylim(-8.5,11)                      # 设定y轴范围

ax.set_xticks(range(1,4.1,0.5))       # 设定x轴的标签

ax.set_yticks(range(-8,11,2))         # 设定y轴的标签

程序运行结果如图4所示,而如果你希望你的坐标轴上的标签显示的不是数字,而是一 些设定好的文字,当然也可以:

ax.set_xticklabels(list("abcdefg"))     # 设定x轴的标签文字

显示结果如图5所示


                             图 4                                                                        图5

通过set_xticks与set_xticklabels的结合,我们就可以任 意变换我们想要的x轴标签的显示形式了,记住,set_xticks是设定标签的实际数字,而set_xticklabels则是设定我们希望他显示的结 果。

本文转自http://hi.baidu.com/%C1%EE%BA%FC%D2%BB%B6%FE/blog/item/adc91dd04c34bc359b502733.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值