Up

ヒストグラムの描画

 

ヒストグラムの描画例である。データはExcelファイルとして図1のように用意する。

図1 temper.xlsx

 

2018年6月4日の日本気象協会によるアメダスの各地の最高気温のデータである。図1のファイルの形式は、1行目に変数名が置かれ、データは2行目以降に書かれている。1列目は、データの識別用で通し番号でも識別用文字列でもよい。2列目にヒストグラムを描くデータ値を設定する。この形式のExcelデータファイルに対してヒストグラムを描くスクリプトがリスト1のDrawHistogram.pyである。スクリプトファイルとデータファイルは圧縮ファイルfileshisto.zipにまとめたので、ダウンロード解凍すれば自由に利用できる。

スクリプトDrawHistogram.pyを実行すると、入力データファイル名の設定を求めるダイアログウィンドウが表示される(図2)。

図2

 

ファイル名を設定して、「開く」ボタンをクリックすると、次にグラフ画像の保存先ファイル名の設定ダイアログボックスが表示される(図3)。

図3

 

保存先ファイル名はファイル拡張子を「.png」としておけば任意であるが、図3では「MyFigure.png」が設定されている

保存先ファイル名を設定すると、図4のヒストグラムが描かれる。

図4

 

 

リスト1 ヒストグラム描画スクリプト例(DrawHistogram.py

 

import tkinter as tk

import tkinter.filedialog as fd

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

 

def askinfilename(msg = None, types = [('', '*.*')]):

    """

            入力用ファイル名の設定

    """

    rt = tk.Tk()

    rt.withdraw()

    flnm = fd.askopenfilename(title = msg, filetypes = types)

    rt.destroy()

    return flnm

 

def askoutfilename(msg = None, types = [('', '*.*')], deftype = '.txt'):

    """

            出力用ファイル名の設定

    """

    rt = tk.Tk()

    rt.withdraw()

    flnm = fd.asksaveasfilename(title = msg, filetypes = types,

                                           defaultextension = deftype)

    rt.destroy()

    return flnm

 

 

finnm = askinfilename('入力データExcelファイル', types = [('Excel(*.xlsx)', '*.xlsx')])

foutnm = askoutfilename(msg = '画像保存ファイル', types = [('画像 (*.png)', '*.png')],

                       deftype = '.png')

 

xlsx_fl = pd.ExcelFile(finnm)

data_xlsx = pd.read_excel(xlsx_fl,  header = None)

data = data_xlsx.values

var_name = data[0,1]

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

 

#       日本語表記の設定

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

 

plt.figure(figsize = (8, 6))             #   画像のサイズ

plt.hist(values)                         #   ヒストグラムの描画

plt.xticks(fontsize = 12)                #   横軸の目盛り文字の大きさ

plt.yticks(fontsize = 12)                #   縦軸の目盛り文字の大きさ

plt.xlabel(var_name, fontsize = 20)      #   横軸の変数名

plt.ylabel('度数', fontsize = 20)        #    縦軸の名前

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

plt.show()                              #   画像の表示

 

 

Up