LoginSignup
2
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-26
動作環境
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
qiita.png

Matplotlib
qiita.png

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
qiita.png

MATLAB
qiita.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2