matplotlibでエーレンシュタイン錯視1を作成する
エーレンシュタイン錯視とは?
エーレンシュタイン錯視は、放射状に配置された線分によって囲まれた中央部分が実際よりも明るく見える錯視現象です。この記事では、Pythonの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です。
四角の表示
四角はスーパー楕円の式を用いて生成しました。詳細は、下記を参照してください。

円の表示
リスト内包表記の[ax.plot(ic,is,’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ファイル)まとめ
本記事では、matplotlibを使ってエーレンシュタイン錯視を再現する方法を紹介しました。放射状の線分を適切に配置することで、中央部分が明るく浮かび上がって見える錯視効果を作り出すことができます。Pythonとmatplotlibを使えば、このような視覚心理学の興味深い現象を簡単にプログラミングで表現できることがわかりました。
参考

コメント