查看: 155|回复: 3

Python matplotlib三维图添加文本标注的方法与示例

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
在数据可视化中,三维图经常需要添加文本标注来说明特定点的坐标或含义。matplotlib 的 mplot3d 工具包提供了 ax.text() 和 ax.text2D() 方法,支持在三维空间或二维坐标上添加标注。本文通过完整示例演示其用法,包括 zdir 方向控制、颜色设置和 2D 文本定位。

首先导入库并创建三维坐标系:
  1. import matplotlib.pyplot as plt
  2. from mpl_toolkits.mplot3d import Axes3D
  3. fig = plt.figure()
  4. ax = fig.gca(projection='3d')
复制代码

示例 1:zdir 参数控制文本朝向
使用 ax.text(x, y, z, label, zdir) 可以在三维点 (x,y,z) 处显示文本。zdir 参数决定文本平面朝向哪个坐标轴(或法向量)。常见取值包括 None(面向相机)、'x'、'y'、'z' 及自定义矢量。下面的代码演示了多个点不同朝向的标注:
  1. zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
  2. xs = (1, 4, 4, 9, 4, 1)
  3. ys = (2, 5, 8, 10, 1, 2)
  4. zs = (10, 3, 8, 9, 1, 8)
  5. for zdir, x, y, z in zip(zdirs, xs, ys, zs):
  6.     label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
  7.     ax.text(x, y, z, label, zdir)
  8. # 同时用散点标记这些点(以第一个点为例)
  9. ax.scatter(1, 2, 10, marker="o")
复制代码

示例 2:设置文本颜色
通过 color 参数(或 c)可以为文本指定颜色。下面的代码在 (9,0,0) 处添加红色文本,并用三角形散点标记该点:
  1. ax.text(9, 0, 0, "red", color='red')
  2. ax.scatter(9, 0, 0, marker="v", c="r")
复制代码

示例 3:使用 text2D 添加不受投影影响的二维文本
text2D 将文本固定在图形窗口的某个位置,不随三维视角旋转。坐标 (0,0) 表示左下角,(1,1) 表示右上角。参数 transform=ax.transAxes 将坐标系统映射到轴域:
  1. ax.text2D(0.5, 1, "2D Text", transform=ax.transAxes)
复制代码

最后调整三个坐标轴的范围和标签,使图表更清晰:
  1. ax.set_xlim(0, 10)
  2. ax.set_ylim(0, 10)
  3. ax.set_zlim(0, 10)
  4. ax.set_xlabel('X axis')
  5. ax.set_ylabel('Y axis')
  6. ax.set_zlabel('Z axis')
  7. plt.show()
复制代码

总结要点:
- ax.text() 的 zdir 参数支持 None(面向相机)、'x'/'y'/'z'(文本平面垂直于该轴)以及自定义方向矢量。
- 颜色通过 color 或 c 参数直接指定。
- text2D 的 transform=ax.transAxes 使坐标归一化到 [0,1],适合在所有视角下固定显示图题或注释。
- 实际使用时可以组合散点图(scatter)和文本标注,定位特定数据点。
该技巧在科研绘图、数据分析演示等场景中经常用到,能有效提高三维图形的可读性。
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: Python matplotlib三维图添加文本标注的方法与示例

非常感谢楼主的详细教程!zdir 参数控制文本朝向的示例非常直观,以前我总搞不清楚不同方向的效果,现在一看就明白了。text2D 固定在窗口位置的方法也很实用,可以方便地添加不随视角旋转的注释或标题。另外,您还结合了散点图标记,让文本和点的对应关系更清晰。这对我做科研绘图很有帮助,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: Python matplotlib三维图添加文本标注的方法与示例

很好的教程!zdir 参数控制文本朝向这块一直没搞太明白,看了你的示例清晰多了,特别是把不同 zdir 的效果放一起对比,非常直观。text2D 固定位置标注也实用,省得旋转视角后文字跑偏。感谢分享,收藏了!
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: Python matplotlib三维图添加文本标注的方法与示例

感谢楼主的详细分享,正好最近在调三维图,文本标注总是被遮挡或者方向不对。之前一直只用默认的zdir=None,没想到还可以指定轴方向甚至自定义矢量,这个示例很有参考价值。另外text2D固定位置的功能也很实用,省去了一旋转视角注释就乱跑的烦恼。楼主有没有遇到过zdir设置为自定义矢量时文本严重拉伸失真的情况?我试过设成(1,1,1)效果不太理想,可能跟视角也有关系,想请教下经验。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-17 19:57 , Processed in 0.028595 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部