MatplotLib库的简单示例程序(plot、格式字符串设定、中文显示、文本显示函数、子绘图区域分割函数)

MatplotLib库是Python中最常用的第三方绘图库,他的API设计大部分模仿自matlab。因此matplotlib与matlab的使用十分相像。

以下程序段在各种环境下均可运行,但推荐在spyder下运行。

 

  • 一维、二维数据的绘图与保存
import matplotlib.pyplot as plt
plt.plot([3,2,1,4,5])
plt.ylabel("grade")
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸点数,代表图形质量)
plt.show() # 在IPython环境下展示图像

对于一维数据,默认列表值为纵坐标,而列表的索引为横坐标。绘图结果如下 

如果要在matlab中实现上述绘图,应写代码如下,可将两者进行对比。

a=[3,2,1,5,4];
plot(a);

 

以下是一个二维数据绘图的小例:

import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,2,1,4,5])
plt.ylabel("grade")
plt.axis([-1,10,0,6])
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸点数,代表图形质量)
plt.show() # 在IPython环境下展示图像

 

 

  •  绘图区域分割
import numpy as np
import matplotlib.pyplot as plt


def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)


a=np.arange(0,5,0.02)
b=f(a)
plt.subplot(2,1,1) # 也可以简写为plt.subplot(212)
plt.plot(a,b)
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.show()

 

 

  • plot函数的format_string 

颜色字符

风格字符

标记字符 

format string 由颜色字符+风格字符+标记字符组合而成

在绘图时,为了区分不同的曲线,往往不仅需要不同的颜色,也需要不同的风格字符,这是因为在打印机上打印的时候线条往往是黑白的。下面是一个实例

import numpy as np
import matplotlib.pyplot as plt


a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'bx',a,a*3.5,'r-.')
plt.show()

 

  • pyplot的中文显示

在pyplot绘图中,并不能直接显示中文,为了显示中文,需要使用一些额外的参数,请看如下程序段:

import numpy as np
import matplotlib.pyplot as plt


a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'go',a,a*3.5,'r-.')
plt.xlabel('横轴',fontproperties='SimHei',fontsize=20)
plt.show()

在设置xlabel时,需要额外增加fontproperties='SimHei’这一参数,意思是使用黑体。python中的中文字体分别叫如下名称:

 

 

  • pyplot中的文本显示函数

import numpy as np
import matplotlib.pyplot as plt


a=np.arange(0,5,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r-')
plt.xlabel('横轴',fontproperties='Kaiti',fontsize=20,color='red')
plt.ylabel('纵轴',fontproperties='Kaiti',fontsize=20)
plt.title('示例函数$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=20)
plt.text(2,1,'$\Omega =2\pi $',fontsize=12)

plt.axis([-1,6,-2,2])
plt.grid(True) # t要大写
plt.show()

 

  • 子绘图区域的分割 

利用subplot函数可以对绘图区域进行一些简单的分割,但是对于一些更复杂的情况则无能为力,例如如下区域分割,只利用subplot函数则难以完成:

此时可以以下函数进行区域分割

 

plt.subplot2grid((3,3),(1,0),colspan=1)

 这段代码选中了图中的黄色区域。参数(3,3)表示把整个区域分成$3\times3$的基本方格;(1,0)表示选中第1行第0列的小方格,也就是黄框的左半部分;cospan=2表示列方向的长度扩展为2。

 

 

另一个方法是使用GridSpec类,如下图所示:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值