[python][科学计算][matplotlib]简要使用教程1-绘图结构

最后一次更新日期: 2019/4/20

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

按需导入以下模块:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

1. 图像figure

In [71]: fig=plt.figure(1)
<Figure size 432x288 with 0 Axes>

In [72]: fig=plt.figure(2,figsize=(5,3))
<Figure size 360x216 with 0 Axes>

In [73]: fig.suptitle('title')
Out[73]: Text(0.5,0.98,'title')

Figure是所有绘图元素的顶级容器,可以认为是一张画布,第一个参数num设置图像的编号,第二个figsize参数设置图像大小。

Figure.suptitle方法用于设置图像的总标题(也可通过plt.suptitle设置),fontsize参数可以设置字体大小,xy参数设置位置坐标,取值为0.~1.的相对于Figure的宽和高的比例。

Figure上无法直接绘图,需要至少添加一个Axes,在调用plt的静态方法绘图时,会绘制在最近声明的一个Figure上,不显示声明则会自动按默认配置创建FigureAxesplt.gcf()方法可以获取当前正在绘制的Figure

Figure.axes可以获取图像下的所有Axes
Figure.clf()方法可以清空图像。

Artist是matplotlib中所有绘图对象的基类,Figure也是继承自该类,可在官方文档查看到完整的继承关系。

2. 坐标轴axes

x=np.arange(0,720,1)
y1=np.sin(x*np.pi/180)
y2=np.cos(x*np.pi/180)

#方法1
fig=plt.figure(figsize=(7.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_axes((0,0,0.5,0.8),title='ax1')
ax.plot(x,y1)
ax=fig.add_axes((0.6,0,0.5,0.8),title='ax2')
ax.plot(x,y2)
plt.show(fig)
#方法2
fig=plt.figure(figsize=(10.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_subplot(121,title='ax1', projection='3d')
ax.plot(x,y1)
ax=fig.add_subplot(122,title='ax2', projection='3d')
ax.plot(x,y2)
plt.show(fig)

Axes的意思是用于绘图的坐标轴,AxesSubplot是封装了Axes的子图,通过不同的方法创建,子图在布局上更方便,绘图时则没有明显的区别,下面会将Axes也称作子图。

绘制不同图像会使用不同轴类型,最常用的xy坐标轴和xyz坐标轴分别为AxesAxes3D。如果只需要一个Axes,可以不显示声明,直接调用plt的静态方法绘制,Axes会被自动创建(通过add_subplot(111))。当存在多个Axes时,可以调用Axes的方法绘图以保证图像被绘制在正确的子图上,调用静态方法绘制时实际上是通过plt.gca()获取了最后声明的Axes

Axes.plot是绘图方法,用于绘制曲线图。
Axes在绘图时需要提供x,y两个轴的坐标,而Axes3D需要提供x,y,z三个轴的坐标,上方的例子中没有提供z轴坐标所以图像被绘制在高度为0的一个平面上。

Axes是绑定在Figure上的,可通过调用Figureadd_axesadd_subplot方法创建新的Axes或是将已有Axes添加到Figure上。两种方法在子图的大小和位置的设置上有所区别,需要相应的调整参数。
add_axes方法的第一个参数rect通过一个浮点数序列设置Axes的位置和大小,格式为(left,bottom,width,height),值均为0.~1.的相对于Figure的宽和高的比例。
add_subplot方法的前三个参数分别设置区间划分的行数、列数、以及子图的索引,例如2,3,5表示将Figure划分为2行3列,在其中第5个区间上添加子图;前三个参数可以替换为单个3位整数表示同一含义,但每位的值不得超过10,例如2,3,5对应235
title参数用于设置子图的标题,也可通过Axes.set_titleplt.title方法设置;
projection参数设置投影类型,即坐标轴类型,其中,'rectilinear'表示直线(xy)坐标轴,也是默认值,'3d'表示3D(xyz)坐标轴。

除以上两种方法,还可使用fig,ax_list = plt.subplots(figsize=(10.5,3),ncols=2,nrows=1)快速规划画布,只需要指定画布大小、列划分数量和行划分数量,省去写循环的时间。

get_children方法能够获取Axes下的所有绘图元素;
collections属性能够获取所有绘图元素集合;
如想获取指定类型的元素,可使用get_xlabel等方法;
cla方法可以清除当前轴的内容。

3. 显示show

plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()



plt.show()方法用于显示已绘制的图像,一般配合plt的静态绘图方法使用(即不显示声明Figure的情况)。在使用静态方法绘图时,如果不调用show,则代码段的中所有绘图元素将会绘制在自动创建的同一Figure的同一Axes上。

在ipython中,直接输入Figure的变量名也可以将其图像显示出来;在执行一段含绘图语句的代码段后,也会自动显示图像。

4. 保存save

fig.savefig('D:\\test.jpg')

Figuresavefig方法可以保存图片至指定路径,也可调用plt的静态方法保存,但必须和绘图的代码一起执行,且必须在show方法之前执行。

ipython中直接右键显示出来的图片也有保存的选项。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容