如何在立方体表面添加文本。我试图解决三维 Package 问题,但我有问题的可视化,因为如果有1000个立方体,如何识别他们每个人。所以我需要在表面上写数字(如果可能的话,每个表面)。我不想要的输出:
我需要的输出:
smdncfj31#
可以将text添加到指定位置和方向的三维轴。下面的示例将文本放在每个框的正面x-z面的中心:
text
xz_sizes = np.array(sizes) xz_sizes[:,1] = 0 label_pos = (np.array(positions) + xz_sizes / 2).tolist() labels = ['12', '24'] for pos, label in zip(label_pos, labels): ax.text( *pos, label, 'x', ha='center', va='center')
PS:如果你愿意,你可以直接计算label_pos作为一个单行线,但对我来说,这似乎比使用辅助数组xz_sizes更复杂:
label_pos
xz_sizes
label_pos = (np.array(positions) + np.insert(np.array(sizes)[:, [0,2]], 1, 0, axis=1) / 2).tolist()
更新:在所有曲面上放置标签的方式完全相同:下面的例子显示了其他两个曲面的情况(1 x正面,1 x背面),所以我想你明白了:
label_pos_y = (np.array(positions) + np.insert(np.array(sizes)[:, [0,2]] / 2, 1, 0, axis=1)).tolist() label_pos_x = (np.array(positions) + np.insert(np.array(sizes)[:, [1,2]] / 2, 0, 0, axis=1)).tolist() label_pos_z = (np.array(positions) + np.insert(np.array(sizes)[:, [0,1]] / 2, 2, np.array(sizes)[:,2], axis=1)).tolist() labels = ['12', '24'] for pos_y, pos_x, pos_z, label in zip(label_pos_y, label_pos_x, label_pos_z, labels): ax.text( *pos_y, label, 'x', ha='center', va='center') ax.text( *pos_x, label, 'y', ha='center', va='center') ax.text( *pos_z, label, 'x', ha='center', va='center')
1条答案
按热度按时间smdncfj31#
可以将
text
添加到指定位置和方向的三维轴。下面的示例将文本放在每个框的正面x-z面的中心:PS:如果你愿意,你可以直接计算
label_pos
作为一个单行线,但对我来说,这似乎比使用辅助数组xz_sizes
更复杂:更新:在所有曲面上放置标签的方式完全相同:下面的例子显示了其他两个曲面的情况(1 x正面,1 x背面),所以我想你明白了: