2016年12月20日火曜日

matpotlib.pyplot で縦横比を1:1に


まずは結果図




物理モデルを組み立てて計算して、その結果を表示したら物理モデルのジオメトリと全然違う!
なんてことはよくある。
それは、matplotlib.pyplot が頭がいいため。
勝手に縦横スケールを最適にしてくれるのだ。
しかしこれでは勝手が良くないので、もちろん縦横比を1:1にしてくれる方法は用意されている。

pylab_examples example code: equal_aspect_ratio.py
要は公式サイトの例に従って

plt.axes().set_aspect('equal', 'datalim')

を入れればいいだけだ。


This page shows how to set the aspect ratio to equal.
このページでは図のアスペクト比、つまり縦横比を1:1にする方法を示します。
In [1]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
In [2]:
t = np.linspace(0,2*np.pi,100)
x = np.cos(t)
y = 0.1*np.sin(t) # 縦は-0.1から0.1まで
In [3]:
plt.figure(figsize=(3,3))
plt.plot(x,y)
Out[3]:
[<matplotlib.lines.Line2D at 0x1521a479a20>]
In [4]:
plt.figure(figsize=(3,3))
plt.plot(x,y)
plt.axes().set_aspect('equal', 'datalim')
plt.savefig("./aspect_ratio.png",dpi=250)