[matplotlib 3D] 21. 3Dグラフにテキストを表示

matplotlib 3D

はじめに

mplot3dで作成した3Dグラフ上にテキストを表示する方法について解説する。

コード

解説

zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
xs = (1, 4, 4, 9, 4, 1)
ys = (2, 5, 8, 10, 1, 2)
zs = (10, 3, 8, 9, 1, 8)

for zdir, x, y, z in zip(zdirs, xs, ys, zs):
    label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
    ax.text(x, y, z, label, zdir)

(zdirs, xs, ys, zs)の組み合わせは6個あるので、6個プロットされる。
%dとすることで()のx,y,z,zdirがそれぞれ当てはめられるので、最初のラベルは、

(1, 2, 10), dir=None

となる。そして、この場合、テキストは(x, y, z)=(1, 2, 10)の位置にプロットされる。

zdirはテキストの向きを設定できる。’x’の場合、x軸に平行、’y’の場合、y軸に平行、’z’の場合、z軸に平行となる。

(1,1,0)や(1,1,1)の場合、その座標にテキストが向く。

ax.text(9, 0, 0, "red", color='red')

(x, y, z)=(9, 0, 0)の位置に赤いredが表示される。

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

transform=ax.transAxes でfig全体の大きさを1としたときの相対的な位置にプロットされる。原点は左下なので、(0.05,0.95)の場合、左上にプロットされる。[1]

参考

mplot3d example code: text3d_demo.py — Matplotlib 2.0.2 documentation
matplotlib 3Dpython
この記事をシェアする
sabopy.comをフォローする
サボテンパイソン

コメント