‘壹’ Matplotlib 可视化之箭头与标注的高级应用
时间线是以时间顺序排列的事件列表,其图形设计通常显示一个长条,并标有与之平行的日期,用于展示同期的事件。
时间线可以采用任何合适的比例来表示时间,以适应主题和数据。许多人使用线性刻度,其中一个距离单位等于设定的时间量。这种时间刻度取决于时间轴中的事件。
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是右上角。
通过绘制两个端点及横线组合,绘制区间线段。
‘贰’ python画箭头(用内置的函数)怎么画
你用的graphics模块?这不是内置的,虽然它是调用内置的Tkinter画图。
option可以是"first","last","both"或"none"。见graphics.py:
def setArrow(self, option):
if not option in ["first","last","both","none"]:
raise GraphicsError(BAD_OPTION)
self._reconfig("arrow", option)
细节要查Tk文档:
6.6. The canvas line object
In general, a line can consist of any number of segments connected end to end, and each segment can be straight or curved. To create a canvas line object on a canvas C, use:
id = C.create_line ( x0, y0, x1, y1, ..., xn, yn, option, ... )
The line goes through the series of points
(x0,
y0),
(x1,
y1),
…
(xn,
yn).
Options include:
arrow The default is for the line to have no arrowheads. Use
arrow=FIRST to get an arrowhead at the(x0,y0)end of the line. Use
arrow=LAST to get an arrowhead at the far end. Use
arrow=BOTH for arrowheads at both ends.
‘叁’ python怎样把箭头变为红色
添加相同的箭头补丁。
在创建箭头时,streamplot似乎做了两件事,将箭头面片(类型FancyArrowPatch)添加到轴向PatchCollection(c.arrows)添加相同的箭头补丁。
虽然axisartist能够很方便地自定义坐标轴的位置和完美地设置箭头,但对于更多属性的设置有点乏力,很多参数的微调还是很花费时间的。
‘肆’ Python的turtle库画图使用中的问题
‘伍’ python数据可视化: 绘制箭头 matplotlib.pyplot.arrow()
【小白从小学Python、C、Java】 【考研初试+复试+毕业设计】 【Python基础+AI+数据分析】 python数据可视化: 绘制箭头 matplotlib.pyplot.arrow()
请问关于以下代码表述正确的选项是? import matplotlib.pyplot as plt print("【执行】plt.arrow(0, 0, 1, 1, head_width=0.1, head_length=0.1)") plt.arrow(0, 0, 1, 1, head_width=0.1, head_length=0.1) plt.xlim(0, 2) plt.ylim(0, 2) plt.show()
A选项:plt.arrow()用于绘制箭头 B选项:plt.arrow()用于创建折线图 C选项:plt.arrow()用于显示图像 D选项:plt.arrow()用于创建热力图
正确答案是:A
图1 问题解析
图2 题目代码
[太阳]温馨期待 期待大家提出宝贵建议,互相交流,收获更大,助教:lxy