MATLABとMatplotlib 3dの座標系 | viewの違い > view(azimuth=0) > MATLAB:xaxisが横軸 | Matplotlib:yaxisが横軸 > MatplotlibとMATLABで同じ表示にするには


動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

pySpherepts > Jupyter > 結果の座標を球面上に表示する実装 v0.2 > 奥の点排除 > 同じものが得られた
にて同じazimuthとelevationとした時に結果が異なるのが気になった。

座標系

座標系を調べた。

MATLAB
http://math.loyola.edu/~loberbro/matlab/html/PlotChangeCoordinates.html

Matplotlib 3d
https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html

Yの方向(正負)が異なる。

MATLABは「右手系」
https://jp.mathworks.com/matlabcentral/answers/80671-does-matlab-use-a-left-handed-or-right-handed-coordinate-system-for-the-plot3-command

Matplotlibは「左手系」なのだろう。

x軸とz軸を基準に見ると、両者が同じように見えてきた。
view()で見える対象が異なるのだろうか。
(azimuthの定義の違い?)

viewの違い

APIの比較

Matplotlibのview_init()
https://matplotlib.org/mpl_toolkits/mplot3d/api.html

view_init(elev=None, azim=None)

MATLABのview()
https://jp.mathworks.com/help/matlab/ref/view.html

view(az,el)

elevationとazimuthを同じにして、軸ラベルを追加してみた。

MATLAB

Matplotlib

azimuthが0の時

  • MATLAB: xaxisが横軸になる
  • Matplotlib: yaxisが横軸になる
  • 手前と奥の軸の正負も異なる
    • MATLAB: yaxis
    • Matplotlib: xaxis

同じ表示にするには

Matplotlibでax.view_init(elev=0, azim=0)に対する
MATLABの設定はview(90,0)にすれば同じ見た目になる。
(90: azimuthに90を足す)

この場合、横軸はy軸になる。
Matplotlib

MATLAB