Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで半分黒・半分白の円( Yin-Yang風の図形)を描画する方法

Matplotlibを使って、半分が黒・半分が白に塗り分けられた円を描くには、matplotlib.patchesモジュールのWedge(扇形)クラスを利用するのが便利です。2つの半円(180度ずつの扇形)を作成し、それぞれ黒と白で塗り分けることで、簡単に目的の図形を実現できます。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
  • FigureとAxes(サブプロット)を作成します。
  • theta1theta2 を初期化し、theta1からtheta2へ、またその逆方向への2つの扇形(半円)を定義します。
  • add_artist() メソッドでWedgeインスタンスを現在の軸に追加します。
  • 軸の範囲を変更してアスペクト比を等倍(equal)に設定し、円が正円として表示されるようにします。
  • x軸・y軸の表示範囲を指定します。
  • show() メソッドで図を表示します。

コード例

import matplotlib.pyplot as plt
from matplotlib.patches import Wedge

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, ax = plt.subplots()
theta1, theta2 = 0, 0 + 180
radius = 2
center = (0, 0)
w1 = Wedge(center, radius, theta1, theta2, fc='black', edgecolor='black')
w2 = Wedge(center, radius, theta2, theta1, fc='white', edgecolor='black')

for wedge in [w1, w2]:
    ax.add_artist(wedge)

ax.axis('equal')
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)

plt.show()

コードの解説

Wedge(center, radius, theta1, theta2) の各引数は以下の意味を持ちます。

  • center: 扇形の中心座標(ここでは原点 (0, 0)
  • radius: 円の半径(ここでは 2
  • theta1 / theta2: 扇形の開始角度と終了角度(度数法)。0〜180度で上半分、180〜360度で下半分になります。
  • fc: 塗りつぶし色(face color)。一方を 'black'、もう一方を 'white' に指定しています。
  • edgecolor: 境界線の色。'black' を指定することで白い半円にも輪郭が付きます。

また、ax.axis('equal') を設定しないと、x軸とy軸のスケールが異なるために楕円状に表示されてしまうため、注意が必要です。

出力結果

上記のコードを実行すると、左半分が黒・右半分が白に塗り分けられた円が表示されます。境界線が黒で描かれているため、白い部分もはっきりと確認できます。

この手法を応用すれば、陰陽マークのような複雑な図形や、パイチャート風のカスタム図形なども自由に作成できます。角度や色を変更して、さまざまなバリエーションを試してみてください。

  1. MatplotlibでNaN値を含むデータをプロット・操作する方法を解説

    MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp

  2. Matplotlibで2本の点線をプロットする方法|マーカー・線種・凡例の設定も解説

    はじめに この記事では、Pythonの可視化ライブラリ「Matplotlib」を使って、2本の線を1つのグラフに描画し、それぞれに異なる線種(点線・破線)や色、太さを設定する方法を解説します。 コーディングを始める前に、まず次のコマンドでMatplotlibをインポートしておきましょう。 import matplotlib.pyplot as plt Pyplotは、MatplotlibをMATLABのように直感的に操作できるようにするためのコマンドスタイル関数のコレクションです。グラフの描画からラベル付けまで、ほとんどの操作をこのモジュール経由で行います。 アルゴリズム(処理の流れ) ステ