Matplotlib 可视化之图表层次结构

网站建设3年前发布
16 0 0
202303061035007731896960a3379b86a8276f93e5d6023c93dc748,Figure中最重要的元素是figure本身。在调用figure方法时创建的,可以指定它的长宽(figsize)及分辨率(dpi),也可以指定背景颜色(facecolor)和标题(suptitle)。另外,当保存图形时,背景颜色将不会被使用,因为savefig函数也有一个faceccolor参数(默认为白色),它将覆盖您的图形背景颜色。如果不想要任何背景,可以在保存图形时指定transparent=True。,这是第二个最重要的元素,它对应于将呈现数据图表的实际区域。它也被称为subplot子图。每个figure可以有一个或多个axes轴,每个axes轴通常由四条边(左、上、右、下)包围,称为spines。每一根spines上都可以装饰有主刻度和次刻度(可以指向内部或外部)、刻度标签和标签。默认情况下,matplotlib只装饰左边和下面的spines边框。,有刻度的spines边线称为轴。水平的是x轴,垂直的是y轴。每个轴每一个都是由一个spines轴线,主刻度、次刻度、主刻度标签、次刻度标签和一个轴标签组成。,Spines是连接轴刻度线和数据区域边界的轴线。它们可以被放置在任意位置,可以选择展示或隐藏它们。,20230306103501b232dd48088ebb4065e840fc4d99a2ace9a3c2258,第一步,设置画布大小、调整坐标轴范围,第二步,设置图表边框格式,第三步,设置图表标题,第四步,设置图表的网格,第五步,设置轴刻度,第六步,绘图,第七步,配置图例,首先需要有画布,才能在上面创作,就像写字需要先拿一张纸。画布的大小(长宽比、分辨率)及刻度范围可以先设置好,如果预先不知道刻度范围,可以等绘图结束后再做适当调整。,2023030610350169130ed867a09a9ec820466459d7e89cf2307f309,设置画布,Matplotlib有两种画图接口:①是便捷的 MATLAB 风格接口,②是功能更强大的面向对象接口。,MATLAB 风格的工具位于pyplot(plt) 接口中。plt.xx之类的是 函数式绘图,通过将数据参数传入 plt类 的静态方法中并调用方法,从而绘图。,这种接口最重要的特性是有状态的:它会持续跟踪 "当前的" 图形和坐标轴,所有 plt 命令都可以应用。可以用 plt.gcf() (获取当前图形)和 plt.gca()(获取当前坐标轴)来查看具体信息。,fig,ax=plt.subplots()是对象式编程,这里plt.subplots()是返回一个元组,包含了 figure 对象(控制总体图形大小)和 axes 对象(控制绘图,坐标之类的)。此外fig.add_subplot()也是相同的道理。,进行对象式绘图,首先是要通过plt.subplots()将 figure 类和 axes 类实例化也就是代码中的fig,ax,然后通过 fig 调整整体图片大小,通过 ax 绘制图形,设置坐标,函数式绘图最大的好处就是直观。,面向对象接口可以适应更复杂的场景,更好地控制你自己的图形。在面 向对象接口中,画图函数不再受到当前 "活动" 图形或坐标轴的限制,而 变成了显式的 Figure 和 Axes 的方法。,20230306103817d58dd4e55de113c4a5b369241a79fe3212d554624,设置轴线,202303061038184167cac39791af5eca1563321fcf706fc311a7577,隐藏轴线,图形的轴线可以通过坐标轴属性ax.spines设置,最常见的设置方法是选择隐藏,通过属性['top', 'bottom', 'left', 'right']分别设置上下左右的轴线。,还有另一种经常使用的情况,根据绘图需要,调整 spines 轴线在图中位置。如绘制正余弦函数时:,20230306103505284905584d6c4ca61749891fba10efa05ce522234,移动轴线,20230306103505219b13a19989dc0303d757e257d82caec0f239560,设置标题,通过ax.set_title函数设置标题。,matplotlib.axes.Axes.set_title(),matplotlib.axes.Axes.set_title()ax.set_title()是给ax这个子图设置标题,当子图存在多个的时候,可以通过ax设置不同的标题。如果需要设置一个总的标题,可以通过fig.suptitle('Total title')方法设置。,参数:,20230306120616b3bdab531ebe3049e789187bf6b39a0e41aa46758,设置网格,通过方法ax.grid()添加网格线。,matplotlib.axes.Axes.grid(),参数:,另外还有几种不同设置网格线的方法:,① 设置 figure 背景颜色,② 设置 axes 背景颜色,③ 修改 matplotlib 默认参数,Matplotlib 每次加载时,都会定义一个运行时配置(rcParams),其中包含了 所有你创建的图形元素的默认风格。你可以用 mpl.rcParams 简便方法随时修 改这个配置。,手动配置,20230306103505b9814c92152e1c43a7a6952d547dcc2098b6d2724,手动配置,使用默认配置样式表,即使你不打算创建自己的绘图风格,样式表包含的默认内容也非常有 用。通过 plt.style.available 命令可以看到所有可用的风格,,使用某种样式表的基本方法如下所示:,20230306103505c21f3eb365c1319dbad09142d6608673b0ceeb639,默认配置,虽然 Matplotlib 默认的坐标轴定位器(locator)与格式生成器 (formatter)可以满足大部分需求,但是并非对每一幅图都合适。,Tick Locator,Tick Locator 主要设置刻度位置,这在我的绘图教程中主要是用来设置副刻度(minor),而 Formatter 则是主要设置刻度形式。Matplotlib 对这两者则有着多种用法,其中 Locator 的子类主要如下:,202303061038194420f6c597b5b375e2f149201b7c47061ef8d7322,Tick Locator,Tick formatters,Tick formatters 设置刻度标签格式,主要对绘图刻度标签定制化需求时,matplotlib 可支持修改的刻度标签形式如下。,20230306103819e37908a90b8e33969109333d7aeb3b447814b5189,Tick formatters,部分代码如下,更改刻度、刻度标签和网格线的外观。,matplotlib.axes.Axes.tick_params(),主要参数:,可以将每个 Matplotlib 对象都看成是子对象(sub- object)的容器,例如每个 figure 都会包含一个或多个 axes 对象,每个 axes 对象又会包含其他表示图形内容的对象。,2023030610381903359d622528ed0b8d790590b82f0f5f0599e4418,设置轴刻度,matplotlib.axes.Axes.plot(),用于绘制XY坐标系的点、线或其他标记形状。,参数:,color(颜色)、marker(标记点)、line(线条)都是可选的,例如如果指定 line 而不指定 marker,20230306103507a90c52303f5ff2f97ff598e97c64b75f724c31907,绘图,想在可视化图形中使用图例,可以为不同的图形元素分配标签。,matplotlib.axes.Axes.legend(),可以用 Axes.legend()命令来创建最简单的图例。,参数:,有时,我们可能需要在同一张图上显示多个图例。用 Matplotlib 通过标准的 legend 接口只能为一张图建一个图例。如果你想用 plt.legend() 或 ax.legend() 方法创建第二个图例,那么第一个图例就会被覆盖。但是,我们可以通过从头开始创建一个新的图例对象(legend artist),然后用底层的(lower- level)ax.add_artist() 方法在图上添加第二个图例。,20230306103508116598815fc914fc62934150dfd3384e2d0584764
© 版权声明

相关文章