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是右上角。
通过绘制两个端点及横线组合,绘制区间线段。