[matplotlibで錯視] 5. エーレンシュタイン錯視1

その他
スポンサーリンク

matplotlibでエーレンシュタイン錯視1を作成する

エーレンシュタイン錯視とは?

エーレンシュタイン錯視とは、同心円の内側にある正方形の辺が、歪んで見える錯視のことである。このエーレンシュタイン錯視をmatplotlibを用いて作成する。

コード

解説

モジュールのインポートと図の作成

背景色の設定

fig.patch.set_facecolor(‘white’), ax.patch.set_facecolor(‘white’) で図を含めた画像全体の背景と図の背景を白にしている。

目盛と目盛ラベルを非表示

plt.tick_params(labelbottom=False, labelleft=False)で目盛ラベルを非表示にし、plt.tick_params(color=’white’)で目盛を白にして見えなくしている。

図の枠線の設定

図の枠線は、ax.spines[‘left’].set_visible(False)のようにすることで上下左右の枠線を非表示にできる。

円と四角を表示するためのパラメータ

四角と円を表示するためのパラメータとして、tとc,sを用いた。tは0〜2πのlinspace配列で、c,sはそのtを用いたcosとsinである。

四角の表示

四角はスーパー楕円の式を用いて生成した。詳細は、下記を参照。

[matplotlib animation] 17. スーパー楕円(Superellipse)
matplotlib FuncAnimationによるスーパー楕円のアニメーション

円の表示

[ax.plot(i*c,i*s,’k-‘, lw=2) for i in np.arange(0.2,1.2,0.05)]のように、リスト内包表記で、半径がnp.arange(0.2,1.2,0.05)となる円を順次、描写していく。’k-‘, lw=2としているので、linewidthが2の黒い実線の円が表示される。

アスペクト比の調整

デフォルトの設定では、円が歪んでしまうので、ax.axis(‘scaled’)とすることで、xとy軸の表示間隔を揃えて、真円が表示されるようにしている。

参考

エーレンシュタイン錯視 - Wikipedia

コメント