前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用箭头和文字来标记重要的点

用箭头和文字来标记重要的点

作者头像
生信修炼手册
发布2020-08-28 03:08:48
1.8K0
发布2020-08-28 03:08:48
举报
文章被收录于专栏:生信修炼手册生信修炼手册

在matplotlib中,可以通过以下几种函数在图中添加箭头和文字标记

1. text,用于添加文字

2. arrow,用于添加箭头

3. annotate,支持同时添加文字和箭头

下面看下具体的用法

1.text

text函数通过指定xy轴坐标,以及对应的文字来实现文字标记的功能,基本用法如下

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.text(x=2, y=2, s='text')
>>> plt.show()

输出结果如下

为了更好的看出文字和坐标的关系,我在图中添加了水平和垂直方向的辅助线, 可以看到,文字的左下角对应的是我们提供的坐标,这个和R语言中默认的文字中心为点的坐标不一样。

文字和坐标的对齐方式可以通过以下两个参数进行调整

1. horizontalalignment, 简写为ha, 取值为left, center, right三者中的一种

2. verticalalignment,简写为va,取值为top, center, bottom,baseline, center_baseline中的一种

用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.text(x=2, y=2, s='text', ha='center',va='bottom')
>>> plt.show()

输出结果如下

对于文字的颜色,大小,字体等常用属性,可以通过以下几个文字的通用参数进行设置

1. color, 文字的颜色

2. fontsize, 文字的大小

3. fontfamily, 字体

用法如下

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.text(x=2, y=2, s='text', color='red', fontsize=12, fontfamily='fantasy')
>>> plt.show()

输出结果如下

在matplotlib中,还可以通过bbox参数对文字的边框进行设置,该参数的取值为一个dict, 常用的key包括facecolor, edgecolor, boxstyle等,基本用法如下

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.text(x=2, y=2, s='text', bbox=dict(facecolor='white',boxstyle='circle'))
>>> plt.show()

输出结果如下

boxstyle有多种取值,更多的信息请查看官方的API文档。

2. arrow

arrow函数通过指定起始点的xy轴坐标和相对起始点的偏移量dx和dy来指定一个箭头标记,基本用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.arrow(x=1, y=1, dx=1.5, dy=1.5)

输出结果如下

控制箭头形状的常见参数如下

1. width, 指定整个箭头的宽度,默认值为0.001

2. head_width, 箭头头部的宽度,默认值为3*width

3. head_length,箭头头部的长度,默认值为1.5*head_width

4. shape, 箭头的样式,默认值为full, 取值范围包括full,left,right

箭头的线条样式,颜色等属性则可以通过以下几个通用参数来设置

1. linestyle,线条的样式

2. facecolor, 箭头的填充色

3. edgecolor,箭头的边框颜色

基本用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.arrow(x=1, y=1, dx=1.5, dy=1.5,width=0.001, head_width=0.1,fc='red')

输出结果如下

3. annotate

annotate既可以只提供文字标记,也可以同时提供文字和箭头两种标记,基本用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.annotate(s='text', xy=(2,2))
>>> plt.show()

输出结果如下

可以看到,上述代码的效果和text函数的效果是相同的,而text函数中的一些属性在annotate中也是可以使用的,比如ha,va,bbox等参数。

在annotate函数中,可以通过xytext和textcoords参数来控制文字的位置,常见用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.annotate(text='text', xy=(2,2), xytext=(0,5), textcoords='offset points')
>>> plt.show()

输出结果如下

textcoords取值为offset points时,xytext的值为text相对xy坐标的偏移量,通过这种方式,可以灵活设置文字的位置。

除了添加文字,该函数也支持添加箭头,基本用法如下

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.annotate('text', (2,2), xytext=(20, 30),textcoords='offset points', arrowprops=dict(facecolor='black', shrink=0.05))
>>> plt.show()

输出结果如下

通过arrowprops参数来指定箭头的属性,该参数的值为dict,其中影响箭头样式核心参数为arrowstyle,不同arrowstyle取值对应的箭头样式 如下

最后来看一个上述参数相互结合的例子

代码语言:javascript
复制
>>> plt.plot([1,2,3,4])
>>> plt.axhline(2)
>>> plt.axvline(2)
>>> plt.annotate('text', (2,2), bbox=dict(boxstyle='round', fc='0.8'), xytext=(20, 30),textcoords='offset points', arrowprops=dict(facecolor='black', shrink=0.05))
>>> plt.show()

输出结果如下

在matplotlib中,添加文字和箭头的方式有多种,可以根据需要灵活选择。

·end·

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档