当前位置: 首页 > news >正文

一周学会Matplotlib3 Python 数据可视化-标注 (Annotations)

锋哥原创的Matplotlib3 Python数据可视化视频教程:

2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

课程介绍

本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。

标注 (Annotations)

标注是数据可视化中用于突出显示特定数据点或区域的重要工具。

annotate() 是 Matplotlib 中用于添加文本注解的核心方法,特别适合在图表中标注特定数据点。以下是全面解析:

plt.annotate(text,                   # 注解文本内容xy,                     # 被注解点的坐标 (x, y)xytext=None,            # 文本位置的坐标 (x, y)arrowprops=None,        # 箭头属性字典**kwargs                # 文本属性 (颜色/字体/对齐等)
)

核心参数详解

参数说明示例
text注解文本内容"Peak Value"
xy被注解点的坐标(3, 9)
xytext文本位置坐标(4, 10)
arrowprops箭头属性字典dict(arrowstyle="->")
xycoords坐标系统(默认为'data')'axes fraction'
textcoords文本坐标系统'offset points'
fontsize字体大小12'large'
color文本颜色"red"
bbox文本背景框dict(boxstyle="round", fc="w")
rotation文本旋转角度45 (度)
ha/va水平/垂直对齐'center', 'top'

箭头属性详解 (arrowprops)

通过字典自定义箭头样式:

arrowprops = {'arrowstyle': '->',          # 箭头样式'connectionstyle': 'arc3',   # 连接线样式'color': 'blue',             # 箭头颜色'linewidth': 2,              # 线宽'linestyle': '--',           # 线型'alpha': 0.7,                # 透明度'relpos': (0.5, 0.5)         # 箭头起点相对位置
}

常用箭头样式:

样式字符串说明图示
'-'无箭头直线——
'->'单箭头
'<-'反向单箭头
'<->'双箭头
'fancy'精致箭头
'wedge'楔形箭头

坐标系统详解

通过 xycoordstextcoords 指定坐标基准:

坐标系统说明应用场景
'data'默认数据坐标标注数据点
'axes fraction'子图比例 (0,0)左下 (1,1)右上固定位置标注
'figure fraction'全图比例跨子图标注
'offset points'相对某点的像素偏移微调位置
'polar'极坐标 (theta, r)极坐标图
# 使用不同坐标系统的示例
plt.annotate('Fixed Position',xy=(0.5, 0.5), xycoords='axes fraction',  # 子图中点ha='center'
)

完整实例:

import matplotlib
import numpy as np
from matplotlib import pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
# 生成数据
x = np.arange(-400, 400, 5)
y = (x - 2) * 2 + 100
​
# 绘图
plt.plot(x, y)
​
# 设置x轴的刻度
plt.xlim(-400, 400)
# 设置y轴的刻度
plt.ylim(-400, 400)
​
# 获取当前的axes
ax = plt.gca()
ax.set_title('测试标题', fontsize=16, pad='20')
ax.set_xlabel('X轴标签', fontsize=10, loc='right')
ax.set_ylabel('Y轴标签', fontsize=10, loc='top')
​
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
​
x1 = 100
y1 = (x1 - 2) * 2 + 100
# 绘制点
plt.scatter(x1, y1, s=45, color='r')
# 绘制虚线
plt.plot([x1, x1], [y1, 0], 'y--', lw=2)
# 加标注
plt.annotate('y = (x - 2) * 2 + 100', xy=(x1, y1), textcoords='offset points', xytext=(+40, -40),arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=0.2",  # 弧度连接color="gray"))
​
# 显示图片
plt.show()

运行效果:

http://www.lryc.cn/news/615380.html

相关文章:

  • [IOMMU]基于 AMD IOMMU(AMD‑Vi/IOMMUv2)的系统化总结与落地方案
  • 【33】C#实战篇——点击按钮弹出指定路径对话框,选择指定类型文件;;;文件过滤器显示指定的一种文件,几种类型文件 同时显示
  • 云渲染的未来已来:渲酷云如何重新定义数字内容生产效率
  • 卫星遥感与AI大模型
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • ADB(Android Debug Bridge)—— Android调试桥
  • PAT 1052 Linked List Sorting
  • java之父-新特性
  • React中实现完整的登录鉴权与权限控制系统
  • 算法题(183):质量检测
  • 【递归、搜索和回溯】FloodFill 算法介绍及相关例题
  • 比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证
  • ToB大型软件可靠性测试方案
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • imx6ull-驱动开发篇15——linux自旋锁
  • Orange的运维学习日记--36.NFS详解与服务部署
  • 回答“http协议 ,js组件化,工程化, seo优化策略 ,针对不同平台终端适配 web标注和兼容性”
  • Vue3的简单学习
  • Vuex 数据共享
  • JVM常用参数有哪些?
  • 06.【数据结构-C语言】队列(先进先出,队列实现:入队列、出队列、获取队头or队尾元素,队列实现代码,队列相关题目)
  • idea设置注释--带日期和作者和描述
  • 排序概念以及插入排序
  • Oracle字段操作
  • (nice!!!)(LeetCode 面试经典 150 题) 146. LRU 缓存 (哈希表+双向链表)
  • 在 Vue 中动态引入SVG图标的实现方案
  • STM32 外设驱动模块四:光敏电阻(LDR) 模块
  • 後端開發技術教學(四) 數據交互延伸
  • 2025年渗透测试面试题总结-09(题目+回答)
  • 力扣(轮转数组)