はじめに
本記事では、中央の円の色が周囲の配置によって変化して見える「Combined Circle」と呼ばれる錯視現象について解説します。この錯視は、同じ色の円が異なる背景色や周囲の要素によって、色が異なって知覚される現象です。Matplotlibを使ってこの錯視をアニメーション化し、視覚的に理解しやすい形で表現していきます。
コード
解説
モジュールのインポート
グラデーション画像生成関数
下記記事で用いたグラデーション画像生成関数を用います。

図の作成
autoscale_on=False
で自動でスケールが変更されないようにします。
背景の作成
cmap=plt.cm.Greys, cmap_range=(0.9, 0.1)
でcmapのGreysで黒から白に変化するグラデーションを表示します。
円の表示
座標(1,0.5)に半径0.15で色がグレースケールの0.5に該当する円を表示します。
円を動かすためのパラメータ
円をx軸方向に動かします。この動きは、中心から右へ移動して一時停止し、次に左へ移動して停止した後、最終的に中央に戻るというパターンです。このような動きのデータは、np.linspace()とnp.ones()関数を使って生成し、最後にhstack()関数で一つにまとめています。
アニメーションの設定
円cをset_center
で動かします。yの位置は0.5固定でxの位置のみmove
の通りに動かすことになります。
アニメーションの表示と保存
FuncAnimationを使用してアニメーションを表示できます。ani.save()でアニメーションを保存でき、HTML(ani.to_html5_video())を使えばJupyter LabやNotebook上に直接アニメーションを表示することができます。
まとめ
Combined Circleの錯視では、物理的には同一の色の円が、周囲の環境によって異なる色に見える現象を確認しました。このような錯視は、人間の視覚システムが色を周囲との関係性の中で処理することを示しています。Matplotlibを用いたアニメーションによって、この現象をダイナミックに表現することができました。このように、プログラミングは視覚心理学の現象を理解し表現するのに有効なツールとなります。
参考

コメント