详解 matplotlib 中的两种标注方法
时间:2022-07-23
本文章向大家介绍详解 matplotlib 中的两种标注方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在二维坐标图中我们经常对绘制的图形进行标注。在 matplotlib 中比较常用的有text
和annotate
两种标注方法,其中:
-
text
称为无指向型标注,标注仅仅包含注释的文本内容; -
annotate
称为指向型注释,标注不仅包含注释的文本内容还包含箭头指向,能够突显细节;
plt.text()
plt.text(x, y, s, fontdict = None, **kwargs)
其中:
- x, y 为标注文本在绘图区域中的位置;
- s 为标注文本的内容;
- fontdict 为文本属性的字典,如果 fontdict 为 None,则使用默认的文本属性;
- **kwargs 可以使用键值对的形式替换 fontdict 中的文本属性;
fontdict 中常见的文本属性参数(其中 [] 为可选参数):
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 300)
y = np.cos(x)
plt.plot(x, y)
plt.text(0, 0.75, r'max', fontdict = {
'family': 'Times New Roman', # 标注文本字体
'fontsize': 20, # 文本大小
'fontweight': 'bold', # 字体粗细
'fontstyle': 'italic', # 字体风格
'color': 'red', # 文本颜色
'backgroundcolor': 'blue', # 背景颜色
'bbox': {'boxstyle':'round'} # 椭圆外框
})
plt.text(-3, 0.75, r'$cos(x)$',
family = 'Times New Roman', # 标注文本字体
fontsize = 18, # 文本大小
fontweight = 'bold', # 字体粗细
color = 'green' # 文本颜色
)
plt.plot(-3, 0.75, 'x', color = 'r')
plt.show()
其中的 max 和
两个文本就是无指向型标注。这里需要注意:
- matplotlib 支持 LaTex,因此标注文本的内容可以是数学公式。如果想要标注文本内容为数学公式,只需要在$之间输入 LaTex 语法即可。比如标注的公式为,只需要将标注文本的内容改成r'y = x^2
- 在
的文本的旁边有一个红色的 x,这个 x 的位置和文本标注的位置都是 (-3, 0.75),可以看出标注文本中的 x 和 y 坐标就是标注文本左下角的位置;
plt.annotate()
annotate
称为指向型注释,标注不仅包含注释的文本内容还包含箭头指向,matplotlib 中还有一个只能实现箭头标注的plt.arrow()
函数,但是由于它生成的是 SVG 向量对象,因此会随着绘制图形的分辨率变化而变化,不太容易控制对应箭头的位置。「所以,如果要实现带有箭头的标注功能,一般使用plt.annotate()
函数,如果只使用箭头标注,可以将plt.annotate()
函数中标注文本的内容设置为空。」
plt.annotate(s, xy, *args, **kwargs)
其中:
- s 为标注文本的内容;
- xy 为标注箭头的开始坐标 (x, y);
- *args 为 xytext = (x, y) 标注文本的坐标;
- **kwargs 主要为字典类型的 arrowprops 参数和键值对形式的 fontdict 中的任何参数;
fontdict 中的参数在介绍plt.text()
无指向标注的时候提到过,这里不再赘述。arrowprops 中常见的箭头属性参数:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 300)
y = np.cos(x)
plt.plot(x, y)
plt.annotate(r'$max$', xy = (0, 1), xytext = (0, 0.75),
arrowprops = {
'headwidth': 10, # 箭头头部的宽度
'headlength': 5, # 箭头头部的长度
'width': 4, # 箭头尾部的宽度
'facecolor': 'r', # 箭头的颜色
'shrink': 0.1, # 从箭尾到标注文本内容开始两端空隙长度
},
family='Times New Roman', # 标注文本字体为Times New Roman
fontsize=18, # 文本大小为18
fontweight='bold', # 文本为粗体
color='green', # 文本颜色为红色
# ha = 'center' # 水平居中
)
plt.plot(0, 1, 'x', color = 'r')
plt.plot(0, 0.75, 'x', color = 'r')
plt.show()
这里需要注意:
-
plt.annotate()
函数中的 fontdict 必须要以键值对的形式展示; -
plt.annotate()
函数中的箭头坐标为箭头指向的坐标位置,标注文本的坐标位置依然是位于标注文本的左下角。如果想让标注文本位于箭头的正下方,只需要添加ha = center
的键值对即可;
「通过上面绘制结果可以看出,添加ha = center
之后,红色 x 现在位于 max 标注文本底部中间的位置,设置va
和ha
参数其实都是相对于给定标注文本的坐标位置进行对齐的。」 比如设置va = center, ha = center
,此时标注文本的坐标位置位于标注文本的正中间。
【资源分享】电子书 | 廖雪峰 Python3 教程(带标签)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Js时间戳倒计时天时分秒
- 微信小程序引用we-cropper裁切图片
- NodeJs获取get/post传值
- Mybatis源码本地化构建Demo
- NodeJs封装静态web服务器、路由、读取文件获取响应类型
- NodeJs使用ejs模板引擎实现后端渲染
- 如何优雅地本地化构建Mybatis源码
- Vue监听返回键关闭弹出层不返回页面
- Css添加div点击态
- Mybatis源码笔记之浅析ParameterHandler
- SpringBoot总结之浅析自动化配置原理
- Vue用keep-alive实现页面缓存
- Mybatis源码笔记之浅析StatementHandler
- Spring之事务传播行为
- Js处理异步async,await