Pythonでインドの国旗を描く方法!NumPyとMatplotlibを使った完全ガイド
Pythonのグラフ描画ライブラリは非常に多機能で、単なるデータの可視化にとどまらず、国旗のような図形も自由に描くことができます。その意味で、これらのモジュールには芸術的な一面もあると言えるでしょう。この記事では、numpyとmatplotlibというライブラリを使って、インドの国旗を描く方法をわかりやすく解説します。
インド国旗の構成要素
インドの国旗は、上から順にサフラン(オレンジ)、白、緑の3本の横帯で構成され、中央には24本のスポークを持つ紺色の車輪「アショーカ・チャクラ」(法輪)が描かれています。各要素には次のような意味が込められています。
- サフラン(オレンジ):勇気と自己犠牲
- 白:真実と平和
- 緑:信仰・豊穣・繁栄
- アショーカ・チャクラ:進歩と正義
アプローチ
同じ幅を持つ3つの長方形を作成し、それぞれ適切な色と枠線で描画します。
pyplot関数を使用して、中央の白い帯の中心にアショーカ・チャクラの円を描きます。
numpyとmatplotlibを組み合わせて、アショーカ・チャクラ内部の24本のスポーク(線)を描きます。
すべての描画処理において、最終的な旗のサイズに合わせて、色・枠線・半径・線の長さを指定します。
プログラム
以下のサンプルコードで、上述のアプローチを実装します。
サンプルコード
import numpy as np
import matplotlib.pyplot as py
import matplotlib.patches as patch
# 国旗の三色をプロット
a = patch.Rectangle((0,1), width=12, height=2, facecolor='green', edgecolor='grey')
b = patch.Rectangle((0,3), width=12, height=2, facecolor='white', edgecolor='grey')
c = patch.Rectangle((0,5), width=12, height=2, facecolor='#FF9933', edgecolor='grey')
m, n = py.subplots()
n.add_patch(a)
n.add_patch(b)
n.add_patch(c)
# アショーカ・チャクラの円
radius = 0.8
py.plot(6, 4, marker='o', markerfacecolor='#000088ff', markersize=9.5)
chakra = py.Circle((6, 4), radius, color='#000088ff', fill=False, linewidth=7)
n.add_artist(chakra)
# アショーカ・チャクラの24本のスポーク
for i in range(0, 24):
p = 6 + radius/2 * np.cos(np.pi*i/12 + np.pi/48)
q = 6 + radius/2 * np.cos(np.pi*i/12 - np.pi/48)
r = 4 + radius/2 * np.sin(np.pi*i/12 + np.pi/48)
s = 4 + radius/2 * np.sin(np.pi*i/12 - np.pi/48)
t = 6 + radius * np.cos(np.pi*i/12)
u = 4 + radius * np.sin(np.pi*i/12)
n.add_patch(patch.Polygon([[6,4], [p,r], [t,u], [q,s]], fill=True, closed=True, color='#000088ff'))
py.axis('equal')
py.show()
実行結果
上記のコードを実行すると、以下のような出力が得られます。

このように、matplotlibのRectangleやCircleなどのパッチ機能と、numpyの三角関数を組み合わせることで、複雑な図形も数行のコードで正確に表現できます。ぜひ色やサイズを変更しながら、さまざまな図形の描画に挑戦してみてください。
-
Pythonでクイックソートを実装する方法|初心者向けにサンプルコードを徹底解説
この記事では、クイックソート(QuickSort)のアルゴリズムを使って配列を並べ替えるPythonプログラムの実装方法を、初心者にもわかりやすく解説します。 問題の定義 問題: 与えられた配列を、クイックソートの考え方を利用して昇順にソートすることです。 クイックソートは「分割統治法」と呼ばれる手法に基づく高速なソートアルゴリズムです。まず配列を基準値(ピボット)を境目に2つの部分に分割し、それぞれの部分配列を再帰的にソートしていくことで、最終的に全体が整列された配列を得られます。 クイックソートの仕組み 処理の流れは以下のとおりです。 配列からピボット(基準となる要素)を選びます。こ
-
Pythonで単利(シンプルインタレスト)を計算する方法をわかりやすく解説
本記事では、Python 3.xを使って単利(シンプルインタレスト)を計算する方法について詳しく解説します。金融計算の基礎となる単利の概念から、実際のコード実装まで、初心者の方にもわかりやすいように順を追って説明していきます。 単利とは? 単利とは、元本に対してのみ利息が発生する計算方式です。複利と異なり、発生した利息が次期の元本に加算されないため、計算式がシンプルなのが特徴です。 単利は「1日あたりの利率 × 元本 × 支払いまでの経過日数」を掛け合わせることで求められます。 単利の計算式 数学的には、以下の公式で表されます。 単利(SI)=(P × T × R)÷ 100 各変数の意味は次