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

Pythonでインドの国旗を描く方法!NumPyとMatplotlibを使った完全ガイド


Pythonのグラフ描画ライブラリは非常に多機能で、単なるデータの可視化にとどまらず、国旗のような図形も自由に描くことができます。その意味で、これらのモジュールには芸術的な一面もあると言えるでしょう。この記事では、numpymatplotlibというライブラリを使って、インドの国旗を描く方法をわかりやすく解説します。

インド国旗の構成要素

インドの国旗は、上から順にサフラン(オレンジ)、白、緑の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()

実行結果

上記のコードを実行すると、以下のような出力が得られます。

Pythonでインドの国旗を描く方法!NumPyとMatplotlibを使った完全ガイド

このように、matplotlibのRectangleやCircleなどのパッチ機能と、numpyの三角関数を組み合わせることで、複雑な図形も数行のコードで正確に表現できます。ぜひ色やサイズを変更しながら、さまざまな図形の描画に挑戦してみてください。


  1. Pythonでクイックソートを実装する方法|初心者向けにサンプルコードを徹底解説

    この記事では、クイックソート(QuickSort)のアルゴリズムを使って配列を並べ替えるPythonプログラムの実装方法を、初心者にもわかりやすく解説します。 問題の定義 問題: 与えられた配列を、クイックソートの考え方を利用して昇順にソートすることです。 クイックソートは「分割統治法」と呼ばれる手法に基づく高速なソートアルゴリズムです。まず配列を基準値(ピボット)を境目に2つの部分に分割し、それぞれの部分配列を再帰的にソートしていくことで、最終的に全体が整列された配列を得られます。 クイックソートの仕組み 処理の流れは以下のとおりです。 配列からピボット(基準となる要素)を選びます。こ

  2. Pythonで単利(シンプルインタレスト)を計算する方法をわかりやすく解説

    本記事では、Python 3.xを使って単利(シンプルインタレスト)を計算する方法について詳しく解説します。金融計算の基礎となる単利の概念から、実際のコード実装まで、初心者の方にもわかりやすいように順を追って説明していきます。 単利とは? 単利とは、元本に対してのみ利息が発生する計算方式です。複利と異なり、発生した利息が次期の元本に加算されないため、計算式がシンプルなのが特徴です。 単利は「1日あたりの利率 × 元本 × 支払いまでの経過日数」を掛け合わせることで求められます。 単利の計算式 数学的には、以下の公式で表されます。 単利(SI)=(P × T × R)÷ 100 各変数の意味は次