

最近matplotlibを始め、こちらのサイトにはお世話になっております。  
多くの質問・回答を拝見しましたが、私のやりたいことに関する質問等がなかったため、初めて質問させていただきます。

matplotlibのAxes3Dにて、3次元のグラフを書いています。  
グラフのx軸y軸が0~20,z軸のみ0~10の値をとる軸を設定していますが、表示の際にどの軸も同じ大きさ(立方体)のグラフとなってしまいます。

その際、z軸はその他2つの軸の半分の大きさ(直方体)となるようなグラフを表示させるにはどのようにすれば良いでしょうか？  
英語等のホームページも見ましたがいかんせん英語が苦手で…

初歩的な質問で大変申し訳ありません、よろしくお願い致します。

* * *

Tatz Sekine様  
コメントありがとうございます。投稿することが初めてで使い方を理解しておらず、すみません。  
コメントに返信等は出来ないのでしょうか…？？  
リンクを拝見させていただきました。ということは3Dでは諦めるしかないのでしょうか…  
早急にご回答いただき、ありがとうございます

* * *

harry0000様  
mjy様  
コメントありがとうございます。どうやらM.sentan と user17177
の2つアカウントをつくってしまったようです…ご迷惑をおかけしてすみません。リンクも貼っていただきありがとうございます。参考にさせていただき、統一したいと思います。  
metropolis様  
回答ありがとうございます！！大変勉強になります！。

M.sentan と user17177 は同一人物です、混乱させてしまい申し訳ありませんでした。


CC BY-SA 3.0
2016-07-15T06:23:48.247
27646
2016-07-16T05:03:07.307
2016-07-16T05:03:07.307
17177
17172
question
python matplotlib
python matplotlib3次元グラフ表示について


こちらの環境は、以下の通りなのですが、

  * Python 2.7.12
  * matplotlib(Axes3D) 1.5.1

`set_aspect(0.5)` とすると、`X-Z` or `Y-Z` のアスペクト比が 0.5 になっているかの様に見えるプロット図が得られます。

**plot_3d.py**

[code]

    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.set_aspect(0.5)
    
    x = np.random.rand(100)*20
    y = np.random.rand(100)*20
    z = np.random.rand(100)*10
    
    ax.set_xlim(0, 20)
    ax.set_ylim(0, 20)
    ax.set_zlim(0, 10)
    
    ax.scatter(x, y, z)
    
    plt.grid()
    plt.show()
    
[/code]

  
  
**表示結果**

[![figure](https://i.stack.imgur.com/K9xY8.png)](https://i.stack.imgur.com/K9xY8.png)


CC BY-SA 3.0
2016-07-15T21:42:31.503
27656
2016-07-15T22:38:39.777
2016-07-15T22:38:39.777
27646
answer