Matplotlib 可视化之箭头与标注的高级应用

发布网友 发布时间:2024-10-23 21:58

我来回答

1个回答

热心网友 时间:2024-10-24 14:40

时间线是以时间顺序排列的事件列表,其图形设计通常显示一个长条,并标有与之平行的日期,用于展示同期的事件。

时间线可以采用任何合适的比例来表示时间,以适应主题和数据。许多人使用线性刻度,其中一个距离单位等于设定的时间量。这种时间刻度取决于时间轴中的事件。

Matplotlib是由John D. Hunter编写的,首个公开版本于2003年发布。在2012年8月John Hunter去世前,Michael Droettboom被任命为matplotlib的首席开发者,2014年Thomas Caswell加入,目前(2021年)担任首席开发者。最新版本为3.4,仅支持Python 3,而2.2版本是一个长期支持的版本,兼容Python 2和Python 3。

时间线绘图

时间线绘图步骤代码

注解:Matplotlib的zorder属性决定了物体与前景的距离。zorder值较小的对象出现在更靠近背景的位置,而具有较大值的对象出现在更靠近前面的位置。例如,在制作一个带有线图的散点图时,可以通过增加其zorder来将线向前移动。

标注

要掌握时间轴图绘制,需要先了解Matplotlib中的标注。标注分为基本标注和高级标注。

关键点:箭头及文本,首先学习下箭头➡️如何绘制。

箭头风格

Matplotlib中画箭头通常比较困难,推荐使用plt.annotate()函数。该函数既可以创建文字,也可以创建箭头,并且它创建的箭头可以进行非常灵活的配置。

箭头的风格是通过arrowprops字典控制的,其中包含许多可用的选项。由于这些选项在Matplotlib的官方文档中都有非常详细的介绍,这里列出一些常用的参数及其设置值。

主要参数:FancyArrowPatch的关键字包括:箭头

箭头的绘制需要几个步骤:① 创建两个点之间的连接路径,由connectionstyle键值控制;② 如果提供了patch对象(patchA和patchB),则会剪切路径以避开该patch;③ 路径进一步由提供的像素总量来缩小(shrinkA&shrinkB);④ 路径转换为箭头patch,由arrowstyle键值控制。

连接路径

两个点之间的连接路径的创建由connectionstyle键控制,并且可用以下样式。注意,angle3和arc3中的3意味着所得到的路径是二次样条段(三个控制点)。当连接路径是二次样条时,可以使用一些箭头样式选项。

在函数ax.annotate()中的连接路径的参数arrowprops,而实际控制箭头样式的参数是connectionstyle,通过设置不同的connectionstyle以改变不同的箭头路径样式。

例如,我们设置如下参数connectionstyle具体值,并绘制出如下样式。

箭头样式

后根据给定的箭头样式将连接路径(在剪切和收缩之后)变换为箭头补丁。

在函数ax.annotate()中的箭头样式的参数arrowprops,而实际控制箭头样式的参数是arrowstyle,通过设置不同的arrowstyle以改变不同的箭头样式。

我们可以设置哪些arrowstyle参数呢?可以通过mpatches.ArrowStyle.get_styles()方法查看所有可以设置的样式。

箭头位置

xy(箭头尖端)和xytext位置(文本位置)都以数据坐标为单位。这两个参数可以通过分别设置xycoords和textcoords来指定xy和xytext的坐标系。

设置xy和xytext的坐标系如下:

通过上述设置完成操作后,设置标注函数:

并且通过上述函数绘制各个事件:

文本注释

主要参数:matplotlib.text.Text实例有各种属性,可以通过关键字参数配置文本命令(例如,title(),xlabel()和text())。

你可以使用对齐参数horizontalalignment,verticalalignment和multialignment来布置文本。

这里是一个使用text()命令显示各种对齐方式的例子。在整个代码中使用transform = ax.transAxes,表示坐标相对于轴边界框给出,其中0,0是轴的左下角,1,1是右上角。

通过绘制两个端点及横线组合,绘制区间线段。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com