皆さん、Matplotlib使っていますかーー?
私は、グラフとかあまり好きではなく、
データサイエンティフィックに【この辺りに顕著に結果が出ているようだ…】という
シリアスドラマのような展開が苦手です。
どちらかというと、直感的に体感してもらう動的飛び道具にして使うことが多いでしょうか。
今回はMatplotlibにおちょくられたので、もう二度とこんな気持ちにならないように備忘録を兼ねて記事にします。
##みんなのx,y,z軸の基準ってどっち方向でしょう
私の認識はこうです
右から左/左から右:x軸
上から下/下から上:y軸
手前から奥/奥から手前:z軸
Matplotlibもそうだろうと思ってレッツ
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#1点だけ表示されるサンプル(x,y,zにたくさんのデータが入る)
x = np.array([1])
y = np.array([2])
z = np.array([3])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax = Axes3D(fig)
#ここでプロット
ax.plot(x,y,z,marker="o",linestyle='None')
plt.show()
これを、1点ではなく人間の骨格点にして置き換えて、その他いろいろエッセンスを足した。
(カメラに向かって右手を振っている想定(つまり、左側の右手)を俯瞰で見ている)
ズコー
寝てるー!!
y軸とz軸が違う。
3Dが得意ではない私は、ここでx,y,zの軸はどれがどちらに向くのが正しいのかわからなくなり
旅に出ました。
##もう一つのルールー
Matplotlibに限らず、こういった基準もあるようです。
ここでは、もう高さとか奥行とかそういうのではなくなってきているというか、
じゃあこの立方体をぐるっとしたら結局同じとか、
言いたいことは分かる、だから何が言いたいの?とか、
バカにはその辺の草でも食わしておけとか、
色々お察しくださいますと幸いです。
先ほどのコードを再度持ち出します。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#1点だけ表示されるサンプル(x,y,zにたくさんのデータが入る)
x = np.array([1])
y = np.array([2])
z = np.array([3])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax = Axes3D(fig)
#y,zを入れ替えてplot
#ax.plot(x,y,z,marker="o",linestyle='None')
ax.plot(x,z,y,marker="o",linestyle='None')
plt.show()
お仕事内容に応じて適切にプロットください。
何が起きているか分かるようになりましたし、反転も改善されています。
#付録
#Forを使ってくるっと回転させる
ax.view_init(elev=None, azim=i)
アーティストのライブみたいになりました。