matplotlib的部分figure子元素;使用matplotlib的三种风格;配置matplotlib后端

主图的各个部分

现在,让我们深入看看Matplotlib的主图的每一部分

主图(Figure)

就是整张绘图区域。主图和所有的从属的子坐标轴区域有联系,少数的像坐标轴区域的题目,图例等等和画布。(不用过于担心画布,实际上是画布去完成绘图,但是对于调用函数的人来说,或多或少它是不可见的)。一个主图会包含一个或者多个坐标轴区域。

生成一个主图的最简单的方法是使用pyplot:

fig = plt.figure()# 生成一个没有坐标轴的主图

fig, ax = plt.subplots()# 返回两个值,第一个是主图,第二个是一套坐标轴

fig, axs = plt.subplots(2,2)# 一个主图和四个坐标轴,按照2x2排列

把坐标轴和主图一起创建是很方便的,但是你也可以在创建主图之后在添加坐标轴区域,这个也允许你添加跟多的复杂的坐标轴属性。

坐标轴区域(Axes)

坐标轴区域就是绘图的区域,这是图像加数据的区域。一个主图可以包含多套坐标轴区域,但是一套坐标轴区域只能从属于一个主图。一个坐标轴区域包含两条或者三条坐标轴。坐标轴的限制(极限)会和数据相关,这个极限也可以通过axes.Axes.set_xlim()方法来控制,坐标轴的名字通过axes.Axes.set_title()控制,axes.Axes.set_label()可以控制坐标轴的标签。

坐标轴(axis)

也就是数值轴。坐标轴的属性关注的是设定图表的极限值和产生坐标轴的标志和坐标轴的名称。名称的位置取决于Locator对象,标签式的字符串会被Formatter格式化。Locator和Formatter会很好地控制标识的位置和标签。

艺术家对象(Artist)

基本的,所有你在主图上可以看到的东西都是一个艺术家对象(甚至是Figure对象,Axes对象和坐标轴axies对象)。这个包含了Text对象,Line2D对象,collection对象,Patch对象等。当主图被绘制出来后,所有的艺术家对象都会在画布上被画出来。大多数的艺术家对象都会被绑定在坐标轴区域对象上,不能共享,也不能移动。

给绘图函数输入参数的类型

所有的绘图函数的输入参数都是numpy的数组或者numpy的ma.masked_arrary(带掩码的numpy数组),类数组类型的像panda数组或者numpy的矩阵有可能会不支持。最好在画图之前先把它们转化为numpy数组。

面向对象的界面和绘画界面

就像上面提到的,使用Matplotlib有两个至关重要的点:

·明确地建立主图和坐标轴区域,对它们使用方法(就是面向对象的操作方法)

·依靠pyplot去自动建立和管理主图和坐标轴,使用pyplot函数去绘图

面向对象风格:

x = np.linspace(0,2, 100)

fig, ax = plt.subplots()# 建立Figure对象和Axes对象

ax.plot(x, x,label='linear')

ax.plot(x, x**2,label='quadratic')

ax.plot(x, x**3,label='cubic')

#由于都是使用ax,因此都是在同一个坐标轴区域绘图

ax.set_xlabel('xlabel')# 设置x轴的名称

ax.set_ylabel('ylabel')# 设置y轴名称

ax.set_title("SimplePlot")# 给坐标轴区域一个名字

ax.legend()#显示图例,如果没有这个,曲线的label不会显示

还有matplotlib风格(不使用对象):

x = np.linspace(0,2, 100)

plt.plot(x, x,label='linear')

plt.plot(x, x**2,label='quadratic')

plt.plot(x, x**3,label='cubic')

plt.xlabel('xlabel')

plt.ylabel('ylabel')

plt.title("SimplePlot")

plt.legend()

事实上还有第三种绘图方法,在你把Matplotlib嵌入到一个GUI应用程序里面的时候,它会完全放弃pyplot,甚至也不需要figure对象的创建。但是我们在这里不讨论;

在交互式的平台,比如jupyter

notebook,我们推荐使用pyplot风格,但是在大型工程里面我们推荐使用面向对象风格。

后端

什么是后端?

很多在网站上和邮寄列表的文档会涉及到后端这个词,很多新手会对这个感到疑惑。matplotlib注重于很多不同的使用情况,也注重对输出的格式化。很多人在python shell上和matplotlib交互,在他们输入命令的时候会让绘图窗口弹出来。很多人使用jupyter nodebook并且使用内联的绘图方式来进行快速的数据分析。还有一些人把matplotlib嵌入到用户接触式的应用中,比如wxpython,pygtk去建立丰富的应用。一些人在批量的脚本中使用matplotlib,通过数字化仿真来生成图片。还有一些人运行网络应用服务去动态地服务于绘图。

为了支持这些不同的用途,matplotlib定位了不同的输出,每一个这种能力就叫做一种后端。前端就是用户面对的代码。相反后端在屏幕后把图片画出来。后端分成接触式后端和非接触式后端。

选择(配置)一个后端

有三种配置后端的方式:

未完。。。

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

推荐阅读更多精彩内容