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()
坐标轴 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()
坐标轴 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, .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()
文本由其边界框对齐,该边界框是围绕文本矩形的矩形框。文本将首先旋转然后对齐。基本上,文本将居中 (x, y)
定位,围绕该点旋转,然后根据旋转后文本的边界框对齐。
因此,如果指定左对齐,底部对齐,则旋转后的文本的边界框的左下角将位于文本的 (x, y)
坐标处。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn