はじめに
この記事では、ムンカー錯視について解説します。ムンカー錯視とは、同じ色の物体が帯状の構造の中にあるとき、周囲の色の影響で異なる色に見える現象です。この錯視は色の同化効果と対比効果によって引き起こされると考えられています。matplotlibを使用して、この視覚的な錯覚を再現し、そのメカニズムを探ります。
コード

解説
モジュールのインポート
図の生成
表示範囲をx,y軸ともに0から1とします。
左の図の設定
縞模様の作成
ax.axhspan()関数を使用して等間隔に並ぶ帯状の長方形を作成します。0.05iと0.025+0.05iは長方形を生成するy軸方向の範囲を指定し、リスト内包表記によって複数の長方形を効率的に作成します。
xminとxmaxパラメータは長方形を表示するx軸の範囲を決定します。facecolor=’0’で長方形を黒色に設定し、zorder=2を指定することで黒い長方形が他の要素よりも前面に表示されるようにしています。
六角形の表示
CirclePolygonを使用して、円を多角形で近似した構造を作成できます。
resolution = 6と設定することで六角形を生成でき、zorder = 1とすることで黒い帯よりも背面に表示されるようにしています。
ax.add_patch(cp6_l)コマンドにより、この六角形を図中に挿入しました。
右の図の設定
右図では表示順を black → lime → whiteの順にするために、
[ax.axhspan(0.05i-0.025, 0.05i, xmin=0.5, xmax=1, facecolor=’1′, zorder=3) for i in range(21)]のように帯状の白い長方形のzorderを3に設定して最前面に表示しました。その次に六角形、最背面に黒い帯状の長方形が表示されるようzorderを調整しています。
参考
http://s-park.wao.ne.jp/archives/1259

同じ色なのに違って見える 「ムンカー錯視」画像が話題 | ねとらぼ
null
matplotlib.axes.Axes.axhspan — Matplotlib 3.1.0 documentation
matplotlib.patches.CirclePolygon — Matplotlib 3.1.0 documentation
コメント