[matplotlibで錯視] 4. カフェウォール錯視

その他

matplotlibでカフェウォール錯視を作成する

カフェウォール錯視とは?

カフェウォール錯視は、平行な水平線が実際には平行であるにもかかわらず、傾いて見える錯視現象です。この錯視はイギリスのブリストルにあるカフェの壁のタイル模様に由来し、1979年にGregorによって発見されました。本記事では、Pythonのmatplotlibライブラリを使用してカフェウォール錯視を再現する方法を解説します。

コード

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

解説

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

figsize=(10,6)で横長の図を作成します。

背景色の設定

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)のようにすることで上下左右の枠線を非表示にできます。

グリッドの設定

ax.yaxis.set_major_locator(plt.MultipleLocator(0.1))を使用してy軸のグリッドの表示間隔を0.1刻みに設定しています。ax.axis([0.05, 0.95, 0.05, 0.95])で表示範囲を指定し、ax.grid(axis=’y’, color=’gray’, lw=2)でy軸にのみ灰色のグリッドを表示しています。

黒い四角の表示

黒い四角(■)はデータのプロット表示によって作成します。まず、np.meshgrid(np.linspace(0.15,0.85,6),np.linspace(0.15,0.85,8))で格子状のデータを生成し、その後x[1,:] +=0.015のように各行を段階的にずらしていきます。

この加工したデータをax.plot(x,y,’s’,markerfacecolor=’k’,markeredgecolor=’gray’, ms=36)というコードでプロットすることで、黒い四角(■)のマーカーとして表示されます。

まとめ

カフェウォール錯視は、白黒の正方形タイルが特定のパターンで配置されることで、平行な線が傾いて見える現象です。本記事では、matplotlibを使用してこの錯視を再現し、視覚効果のメカニズムについて説明しました。プログラミングによって錯視を生成することで、人間の視覚認知メカニズムを理解するための一助となれば幸いです。

参考

カフェウォール錯視

コメント