[matplotlib] 2.matplotlibで画像つき円グラフ

matplotlib

はじめに

ここでは、1991年1月1日から2020年12月31日までの30年間のデータから算出される東京管区気象台の4月19日における天気の出現率データを使用します。データは晴れ、曇り、雨の3種類に分類され、1月11日における天気の出現率を視覚的に表した円グラフで、各天気のアイコンが対応する部分に表示されています。

晴れ33.3
曇り33.3
33.3

コード

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

解説

画像のダウンロード

いらすとやの天気アイコンのページから以下の画像をダウンロードします。

モジュールのインポート

バージョン

データの準備

ラベルと東京管区気象台の4月19日の天気出現率と色を準備しておきます。

画像の読み込み

plt.imreadで画像を読み込みます。

画像の挿入関数

この関数は、円グラフに画像を追加するための関数です。

引数の説明

  • image: 挿入する画像データ(mpimg.imread()で読み込んだ画像)
  • position: (x, y)の形式で指定する画像の配置位置。円グラフでは中心が(0,0)、半径が1の円座標系で表現されます。
  • zoom: 画像の拡大・縮小率。1.0が原寸サイズで、0.5なら半分のサイズになります。

関数の内部処理

1. OffsetImageの作成: まず、与えられた画像を指定したzoom値で拡大・縮小し、OffsetImageオブジェクトを作成します。

2. AnnotationBboxの作成: 次に、以下のパラメータを使ってAnnotationBboxオブジェクトを作成します:

  • imagebox: 先ほど作成したOffsetImageオブジェクト
  • position: 画像を配置する位置座標
  • xycoords=’data’: 位置座標の基準系を指定(’data’はグラフの座標系を使用)
  • boxcoords=”offset points”: 画像の配置オフセットの基準系
  • pad=0.5: 画像とその外枠の間の余白
  • arrowprops: 矢印の見た目を指定する辞書型オブジェクト
    • arrowstyle: 矢印のスタイル、ヘッドの幅と長さを指定
    • fc=”0.8″: 矢印の塗りつぶし色(0.8はグレー)
    • ec=”0″: 矢印の輪郭線の色(0は黒)
    • lw=2: 矢印の線の太さ

3. グラフへの追加: 最後に、ax.add_artist()メソッドを使って作成したAnnotationBboxオブジェクトをグラフに追加します。

円グラフの作成

42-48部分では、matplotlibのpie関数を使用して円グラフを作成しています。主なパラメータの役割は次のとおりです:

  • sizes: 各セグメントの大きさを表す配列(この例では晴れ55%、曇り34%、雨11%)
  • labels: 各セグメントのラベル(「晴」「曇り」「雨」)
  • colors: 各セグメントの色(空色、灰色、青色)
  • autopct=’%d%%’: 各セグメントの中央に表示するパーセント値の書式(整数値と%記号)
  • startangle=90: 円グラフの開始角度(90度から時計回りに描画)
  • labeldistance=1.1: 円の中心からラベルまでの距離(半径の1.1倍)
  • textprops: テキストの表示設定(フォントサイズやフォントの太さなど)

画像の挿入

画像挿入関数を使って3つの天気アイコンを円グラフ上の適切な位置に配置しています。それぞれの位置座標は、円グラフの中心を(0,0)として、各天気に対応する扇形の中心付近に配置されるように調整されています。zoomパラメータはすべて0.3に設定されており、画像のサイズを30%に縮小しています。

参考

matplotlib.offsetbox — Matplotlib 3.10.5 documentation
matplotlib.pyplot.pie — Matplotlib 3.10.5 documentation

コメント