如何在散点图中显示“id”(python matplotlib)

问题描述 投票:0回答:1

我想在每个散点图中显示适当的 ID(整数)。这些图被放置在 3D 图中,但无论我尝试什么,我似乎都无法让它工作。有人可以帮助我吗?

def generate_3d_plot(spawn_points, minmax_x, minmax_y, minmax_z, output_filename, map_id):
    fig = plt.figure(figsize=(9, 7), dpi=300)
    ax = fig.add_subplot(111, projection='3d')
    ax.view_init(elev=25, azim=45)
    for i, (x, y, z) in enumerate(spawn_points):
        ax.text(x, y, z, f"{i+1}", color='white', ha='center', va='center', fontsize=12)
        ax.scatter(x, y, z, color='black', s=150)
    ax.set_xlim(*minmax_x)
    ax.set_ylim(*minmax_y)
    ax.set_zlim(*minmax_z)
    ax.grid(True, which='both', ls="--", linewidth=0.5, color='grey')
    ax.set_axisbelow(False)
    plt.savefig(output_filename, bbox_inches='tight')
    plt.close()

现在绘图工作正常,图表已创建,但图中没有 id。

现在绘图工作正常,图表已创建,但图中没有 id。

python matplotlib
1个回答
0
投票

问题是您的分散显示在文本上。 解决方案是通过

zorder
关键字指定您希望文本位于散点图的顶部(请参阅 zorder demo)。

你可以做类似的事情

ax.text(x, y, z, f"{i+1}", color='white', ha='center', va='center', fontsize=12, zorder=spawn_points.size)

它指定所有文本显示在所有散点的顶部。 我假设你

spawn_points
是一个 numpy 数组,否则只需将 zorder 大于点数,你就会获得所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.