python常用函数图片_[转载]Python绘图实用函数

入门

使用python绘制图像需要导入matplotlib下的pylab模块。下面是一个简单的例子。

import pylab as pl

pl.plot(0,0,‘ro’)

pl.show()

# pl.savefig(‘fig.jpg’)

pylab中很多函数和matlab一样,参数的含义也是相似的。例子中plot()函数在原点处画了一个红色的圆点。

pylab在画图时的完整过程应该是先创建一个图像对象,根据给定的xy值画图,将图像显示或保存。这样方便我们同时绘制不同图像。而例中是因为pylab自动创建了一个图像对象,因此代码没有报错。

show()函数会弹出一个窗口显示绘制的图像,并同时清空图像。savefig()函数保存所绘制的图像到指定文件,其字符串参数为文件名,还有一些可选参数,例如savefig(‘fig.jpg’,dpi=300)将分辨率调整为300.

plot()函数

plot()函数的参数为plot(x,y,type)。x和y为两个等长数组(列表、元组或者numpy中的ndarray都可以),给定一组自变量与函数值的对应关系。type为绘图类型(点、线的颜色和形状等),颜色参数有r表示红色,b表示蓝色,g表示绿色,k表示黑色等,点的形状参数有*表示星形,x表示叉形,o表示空心圆点,^表示正三角等,线的形状参数有-表示实线,--表示虚线,-.表示点划线,-..和--.表示更丰富的点划线。其参数含义和matlab一致,可以谷歌查到。

from numpy import *

from pylab import *

x = arange(0,2*pi,0.05)

y = sin(x)

plot(x,y,‘r-’)  #用红色实线画出正弦曲线

show()

x = arange(0,1,0.2)

y = x + 1

plot(x,y,‘go’)

#用绿色圆点画出y=x+1直线上,x从0到1间隔0.2的点

show()

三维绘图

三维绘图需要Axes3D,如下语句所示。

from mpl_toolkits.mplot3d import Axes3D

三维绘图仍然可以使用plot()函数(不过这里是Axes3D类的函数了)画点,例如

from mpl_toolkits.mplot3d import Axes3D

import pylab as pl

fig = pl.figure()

ax = Axes3D(fig)

ax.plot(0,1,2,‘ro’)

pl.show()

绘制曲面需要contourf()函数

ax.contourf(x, y, z)

其中x和y为两个等长一维数组,z为二维数组,指定每一对xy所对应的z值。

绘图函数plot()和contourf()都有一个指定透明度的可选参数alpha,其范围是[0,1],0表示完全透明,1表示完全不透明。例如plot(x,y,‘ro’,

alpha=0.2)。

有时需要设置坐标轴的标识,可以使用(或不使用)LaTeX的数学模式标记,例如

ax.set_zlabel('$z$')

为将z轴设置标记为z。

三维绘图有时还需要设置视角(相机的位置),利用view_init()函数。view_init(elev,azim)有两个可选参数,elev指定z轴的倾斜角度(elevation

angle),azim指定x-y平面的方位角(azimuth angle)。例如

ax.view_init(elev=10,azimuth=-30)

阴影

在绘制二维图像时,有时需要在某些区域涂上颜色,可以使用fill_between(x,y0,y1)函数,其中x,y0和y1均为等长一维数组(如果不变化,则也可以简写为常数)。例如

pl.fill_between(x, y0, y1, color='red', alpha=0.2)

表示将x所指定的范围,在y0到y1区域之间涂上红色,透明度为0.2。color参数还可以设定为16进制表示,例如color=‘#FF0000’。

fill_between()函数还有一个可选参数where用于指定涂色条件,例如where=y0>1表示当y0大于1时才涂色,注意不需要用字符串表示。

坐标轴

pylab和matlab一样,会根据图像的分布自动调整x与y方向的范围和比例。当我们想生成一组大小一样的图片时,需要使用xlim()和ylim()函数。例如

xlim(xlow, xhigh)

表示限定显示x坐标的范围在xlow到xhigh之间。

设定坐标轴缩放的比例相同axis(‘equal’),注意该语句与xlim()及ylim()同时使用时可能冲突。

设置坐标轴的标签使用xlabel(‘’)和ylabel(‘’)函数,字符串可以使用LaTeX公式表示的方法,例如xlabel(‘$x_1$’)。

网格

需要添加网格时,使用grid(True)即可,效果如下。

sg_trans.gif

图例

对于多条曲线的图,有时需要指明曲线含义时,可以先指明每种曲线的label,再通过legen()函数使用图例显示。描述label的字符串可以使用LaTeX公式表示方法,不过需要注意公式中的“”均需要使用转义字符表示。示例如下。

plot(x, x+1, ‘b—’, label=‘y=x+1’)

plot(x, x,‘r-’,label=‘$y=\vec{x}$’)

legend()

show()

图例的位置可以通过legend()函数的loc参数进行调整,可以取1-10的整数,分别表示“左中右*上中下”的9个位置(其中5和7为right和center

right,应该是一种位置),例如legend(loc=3)表示将图例放在左下角。

有时图例过大,需要使用较小的字号,可以添加如下语句。

rcParams['legend.fontsize'] = 'small'

如果图例在坐标区域实在放不下,可以使用bbox_to_anchor和bbox_trasform参数,使图例悬浮在外部。例如如下语句的效果。

legend(bbox_to_anchor=(-2,-2,1,1),

bbox_transform=gcf().transFigure)

sg_trans.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值