Up

円グラフ

 

犬、猫、鳥の中から一番飼いたいペットを29人の人に聞いたところ、図1に示す結果が得られたとする。データがカテゴリごとの度数で与えられている場合は、本ウェブトの後半で説明する。

図1 Excelデータファイル(Individual.xlsx

 

第1列目に個人の識別用変数Personの値(数値でも文字列でもよい)、第2列目に選ばれたペットが設定されている。第1行目には変数名が書かれているので、データは2行目からである。

図1の形式のExcelデータファイルを読み込んで円グラフを描くスクリプトをウェブサイト後半のリスに示す。スクリプトファイルとデータファイルは圧縮ファイルfilespiechart_nfd.zipにまとめたので、ダウンロード解凍すれば自由に利用できる。

リスト1のスクリプトを実行すると、まず、入力データファイル名の設定が求められる(図2)。

図2

 

図2では、図1のファイル名Individual.xlsxが設定されている。設定後、「Enter」キーを押すと、次に、画像保存用ファイル名の設定が求められる(図2)。円グラフの描かれた画像を保存するファイル名を、ファイル拡張子が「.png」である適当な名前で設定する。図2では「MyFigure1.png」と設定されている。

ファイル名を設定して、「Enter」キーを押すと、データが読み込まれて、図3の円グラフが表示される。

図3

 

図3のウィンドウを閉じると、スクリプトの実行終了である(図4)。

図4

 

保存画像ファイルは、スクリプトの実行終了後、開くことができる。

 

 

リスト1 図1の形式のデータから円グラフを描くスクリプト(PieInd.py

 

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

 

finnm = input('入力データファイル(*.xlsx= ')

foutnm = input('画像保存ファイル(*.png= ')

#

#      Excelファイルの読み込み

#   モジュール xlrd がインストール済みであること

#

xlsx_fl = pd.ExcelFile(finnm)                       #   ExcelファイルからExcelFile型オブジェクトを生成

data_xlsx = pd.read_excel(xlsx_fl,  header = None)  #   ExcelFile型オブジェクトからDataFrame型オブジェクトを生成

data = data_xlsx.values                             #   Dataframe型オブジェクトからnumpyの配列オブジェクトを生成

print(data)

 

var_name = data[0,1]

values = data[1:].T[1]

Categ, counts = np.unique(values, return_counts = True)

print(Categ)

print(counts)

 

#       日本語表記の設定

plt.rcParams['font.family'] = ['Yu Gothic', 'Noto Sans CJK JP', 'Hiragino Maru Gothic Pro']

 

#             円グラフの表示

def func(pct):

    return '{0:.1f}%'.format(pct)

plt.pie(counts, labels = Categ, labeldistance = None, autopct = lambda pct: func(pct))

 

plt.title(var_name, fontsize = 20)       #   タイトルの表示

plt.legend()                             #   レジェンドの表示

plt.savefig(foutnm)                      #   画像の保存

print('\n保存画像ファイル:', foutnm, '\n')

plt.show()                               #   画像の表示

 

 

データがカテゴリごとの度数で与えられている場合

図1のデータが図5のようにカテゴリごとの度数で与えられているとする。

図5 ExcelデータファイルPooled.xlsx

 

図5では、1行目の1列目に変数名Petが書かれている。2行目にカテゴリ名、3行目にカテゴリの度数が設定されている。この形式のデータを入力ファイルとするスクリプトを本ウェブサイト後半のリスに示す。スクリプトファイルとデータファイルは圧縮ファイルfilespiechart_nfd.zipにまとめたので、ダウンロード解凍すれば自由に利用できる。

リスト2のスクリプトを実行すると、入力データファイル名の設定が求められる(図6)。

図6

 

図6では、図5のファイル名が設定されている。設定後、「Enter」キーを押すと、次は、円グラフの画像ファイルを保存するファイル名の設定が求められる(図6)。ファイル拡張子が「.png」である任意の名前で設定する。図6では、「MyFigure2.png」と設定されている。既にあるファイル名を設定すると上書き保存になる。

保存ファイル名を設定して「Enter」キーを押すと、データが読み込まれて、図7の円グラフが表示される。

図7

 

図7のウィンドウを閉じると、スクリプトの実行終了となる(図8)。

図8

 

実行終了後、保存画像ファイルを開くことができる。

 

 

リスト2 度数がカテゴリごとに集計されたデータの円グラフ描画スクリプト(PiePooled.py

 

import pandas as pd

import matplotlib.pyplot as plt

 

finnm = input('入力データファイル(*.xlsx= ')

foutnm = input('画像保存ファイル(*.png= ')

#

#      Excelファイルの読み込み

#   モジュール xlrd がインストール済みであること

#

xlsx_fl = pd.ExcelFile(finnm)                       #   ExcelファイルからExcelFile型オブジェクトを生成

data_xlsx = pd.read_excel(xlsx_fl,  header = None)  #   ExcelFile型オブジェクトからDataFrame型オブジェクトを生成

data = data_xlsx.values                             #   Dataframe型オブジェクトからnumpyの配列オブジェクトを生成

print(data)

 

VarName = data[0][0]

Categ = data[1]

counts = data[2]

 

#       日本語表記の設定

plt.rcParams['font.family'] = ['Yu Gothic', 'Noto Sans CJK JP', 'Hiragino Maru Gothic Pro']

 

#                   円グラフの表示

def func(pct):

    return '{0:.1f}%'.format(pct)

plt.pie(counts, labels = Categ, labeldistance = None, autopct = lambda pct: func(pct))

 

plt.title(VarName, fontsize = 20)        #   タイトルの表示

plt.legend()                             #   レジェンドの表示

plt.savefig(foutnm)                      #   画像の保存

print('\n保存画像ファイル:', foutnm, '\n')

plt.show()                               #   画像の表示

 

 

Up