注意
跳转到末尾以下载完整的示例代码。
transforms.offset_copy#
这说明了 transforms.offset_copy
的用法,以创建一个变换,该变换可将绘图元素(如文本字符串)在屏幕坐标(点或英寸)中相对于任何给定坐标的位置进行指定偏移。
每个 Artist(如 Text、Line2D 等)都有一个变换,可以在创建 Artist 时设置,例如通过相应的 pyplot 函数。默认情况下,这通常是 Axes.transData 变换,它将数据单位转换为屏幕像素。我们可以使用 offset_copy
函数来创建此变换的修改副本,其中修改内容包括一个偏移。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.transforms as mtransforms
xs = np.arange(7)
ys = xs**2
fig = plt.figure(figsize=(5, 10))
ax = plt.subplot(2, 1, 1)
# If we want the same offset for each text instance,
# we only need to make one transform. To get the
# transform argument to offset_copy, we need to make the Axes
# first; the subplot function above is one way to do this.
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
x=0.05, y=0.10, units='inches')
for x, y in zip(xs, ys):
plt.plot(x, y, 'ro')
plt.text(x, y, '%d, %d' % (int(x), int(y)), transform=trans_offset)
# offset_copy works for polar plots also.
ax = plt.subplot(2, 1, 2, projection='polar')
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
y=6, units='dots')
for x, y in zip(xs, ys):
plt.polar(x, y, 'ro')
plt.text(x, y, '%d, %d' % (int(x), int(y)),
transform=trans_offset,
horizontalalignment='center',
verticalalignment='bottom')
plt.show()