Matplotlib 教程 - 在图中放置文本

Jinku Hu 2024年2月15日
  1. 坐标轴 Text
  2. 坐标轴 Text 基本示例
  3. 坐标轴 Text 旋转
  4. 坐标轴 Text 旋转角度说明
Matplotlib 教程 - 在图中放置文本

在本教程中,我们将学习如何在绘图中放置文本。你既可以添加文本并为该文本指定坐标位置,也可以将文本添加到特定图上,并绘制一个直接指向该图的箭头。

坐标轴 Text

matplotlib.axes.Axes.text(x, y, s, fontdict=None, withdash=False, **kwargs)

它将文本 s 添加到数据坐标中位置 (x, y) 的轴上。

参数

名称 数据类型 描述
x, y scalars 放置文字的位置
s str 文字
fontdict dictionary 覆盖默认文本字体属性的字典

坐标轴 Text 基本示例

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 4 * np.pi, 1000)
y = 10 * np.sin(x)

fig, ax = plt.subplots(1, figsize=(6, 4.5))
ax.plot(x, y, "r")
ax.text(2.0, 9.5, "Peak Value", fontsize=14)

ax.grid(True)

plt.show()

Matplotlib 文字

坐标轴 Text 旋转

坐标轴 text 具有关键字参数- rotation,用于指定图中的文本旋转角度。rotation 的角度为 0 到 360(度)之间。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 4 * np.pi, 1000)
y = 10 * np.sin(x)

fig, ax = plt.subplots(1, figsize=(6, 4.5))
ax.plot(x, y, "r")
ax.text(1.3, 9.0, "Peak Value", fontsize=16, rotation=270)

ax.grid(True)

plt.show()

Matplotlib Text\_Rotation

坐标轴 Text 旋转角度说明

旋转角度为逆时针方向。我们制作了一个演示脚本来说明旋转角度的定义。

import matplotlib.pyplot as plt
import numpy as np


def addtext(ax, props):
    for x in range(8):
        angle = 45 * x
        ax.text(0.5 + x, 0.5, "{} degree".format(angle), props, rotation=angle)
        ax.scatter(x + 0.5, 0.5, color="r")

    ax.set_yticks([0, 0.5, 1])
    ax.set_xlim(0, 8)
    ax.grid(True)


# the text bounding box
bbox = {"fc": "0.8", "pad": 0}

fig, axs = plt.subplots(1, 1, figsize=(8, 3))

addtext(axs, {"ha": "center", "va": "center", "bbox": bbox})
axs.set_xticks(np.arange(0, 8.1, 0.5), [])
axs.set_ylabel("center / center")

plt.show()

Matplotlib Text\_Rotation 角度演示

文本由其边界框对齐,该边界框是围绕文本矩形的矩形框。文本将首先旋转然后对齐。基本上,文本将居中 (x, y) 定位,围绕该点旋转,然后根据旋转后文本的边界框对齐。

因此,如果指定左对齐,底部对齐,则旋转后的文本的边界框的左下角将位于文本的 (x, y) 坐标处。

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook