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軸の表示間隔を揃えて、真円が表示されるようにしている。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
エーレンシュタイン錯視 - Wikipedia
コメント