python - 将文本标签放置在不依赖于数据的 3D 坐标中

标签 python matplotlib plot 3d label

我有一个包含 2x2 3-D 图形的子图。在此图中,我想放置一个文本框,以放置一些附加信息。 为此,我找到了 ma​​tplotlib.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

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

最佳答案

我找到了答案here ,可以使用以下方法切换到 2D 标签放置:

ax.text2D(0.05, 0.95, "2D Text", transform=ax.transAxes)

关于python - 将文本标签放置在不依赖于数据的 3D 坐标中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639583/

相关文章:

python - 如何在 python 3.x 中使用 string.replace()

python - 计算 Matplotlib 文本旋转

python - 计算字典值的百分比

python - Matplotlib 自定义标记/符号

python - Matplotlib colorbar 不绘制四肢边缘

python - 你如何在 matplotlib 中设置绘图的外部 bg 颜色

r - 在对角线中针对公共(public)垂直轴变量绘制 pairs() 变量的函数

python - 删除散点图中的绘制点 - matplotlib

python - Python 中的浮点精度

python - Numpy reshape - 自动填充或移除