将文本标签放置在不依赖于数据的三维坐标中

2024-06-17 15:17:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个子图包含2x2个三维图形。在这个图表中我想放置一个文本框,以放置一些附加信息。 为此,我找到了matplotlib.pyplot.text功能。 但是,此函数使用数据坐标作为输入。因为我的四个子图都有不同的z值范围,所以将文本放在一个z坐标上会给它们其他相对位置。在

MWE公司

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def randrange(n, vmin, vmax):
    return (vmax-vmin)*np.random.rand(n) + vmin

fig = plt.figure()
for plotnr in [1,2,3,4]:
    ax = fig.add_subplot(2, 2, plotnr, projection='3d')
    n = 10
    for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
        xs = randrange(n, 23, 32)
        ys = randrange(n, 0, 100)
        zs = np.divide(randrange(n, zl, zh),1000/(10**(plotnr-1)))
        ax.scatter(xs, ys, zs, c=c, marker=m)
        ax.text(27, 60,3,'matplotlib', ha='center', va='center',transform=ax.transAxes)
plt.show()

从图像中可以看到,“matplotlib”正在移动,甚至根本不存在。我认为这是因为z值的变化。 text-label misalignment

是否可以将文本框放置在相对于图像的坐标处,而不是相对于数据的坐标处?


Tags: 数据textimportmatplotlibasnpfigplt