pythonのmatplotlibを用いて、3次元グラフのプロットをしています。
ここで、xy方向のアスペクトをそろえる方法が分かりません。
問題の画像は下の画像です。x軸方向とy軸方向でアスペクトが等しくありません。
コードは次の通りです。
python
1 2 3import collections 4from mpl_toolkits.mplot3d import Axes3D 5import math 6import matplotlib.animation as animation 7import sys 8import matplotlib.pyplot as plt 9import time 10import h5py 11import numpy as np 12import matplotlib 13import sympy 14import mpmath 15 16fig = plt.figure() 17ax = fig.add_subplot(111,projection="3d") 18 19def plot(): 20 x = np.empty((100,100),float) 21 y = np.empty((100,100),float) 22 z = np.empty((100,100),float) 23 a=1. 24 b=3. 25 for i in range(100): 26 for j in range(100): 27 x[i][j]=(i-49.51)/49.5 * a/2 28 y[i][j]=(j-49.51)/49.5 * b/2 29 30 ma=0 31 for i in range(100): 32 for j in range(100): 33 z[i][j] = x[i][j]*x[i][j]-y[i][j]*y[i][j] 34 ma=max(z[i][j],ma) 35 for i in range(100): 36 for j in range(100): 37 z[i][j]/=ma 38 ax.set_xlim(-a/2,a/2) 39 ax.set_ylim(-b/2,b/2) 40 ax.auto_scale_xyz([0,1],[0,1],[0,1]) 41 ax.plot_wireframe(x, y, z) 42plot() 43 44fig.savefig("out",transparent=True) 45 46
ax.auto_scale_xyz([0,1],[0,1],[0,1])を入れるとよいとあったので試してみたのですが変化ありませんでした。
解決方法のわかる方いらっしゃったら教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/17 06:49
2019/01/17 07:22
2019/01/17 15:53