質問: 最近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 は同一人物です、混乱させてしまい申し訳ありませんでした。
回答: こちらの環境は、以下の通りなのですが、 * Python 2.7.12 * matplotlib(Axes3D) 1.5.1 `set_aspect(0.5)` とすると、`X-Z` or `Y-Z` のアスペクト比が 0.5 になっているかの様に見えるプロット図が得られます。 **plot_3d.py** ``` 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() ``` **表示結果** !figure