Up

折れ線グラフ

 

図1は、日本気象協会による201865日の東京都千代田区の10日間最高気温予測値である。

図1 データファイル例temper10days.xlsx

 

図1では、1行目に変数名が書かれ、データ値は2行目以降に設定されている。1列目は折れ線において横軸で表されるデータ値であり、2列目に縦軸で表されるデータ値が設定されている。図1によると14日の予測最高気温は25℃である。

図1のデータを読み込んで、折れ線を描くスクリプト例を本ウェブサイト後半のリスト1に示す。スクリプトファイルとデータファイルは、圧縮ファイルfileslinegraph.zipにまとめている。ダウンロード解凍すれば自由に利用できる。リスト1のスクリプトを実行すると、入力ファイルデータ名の入力を求めるダイアログウィンドウが表示される(図2)。

図2

 

図2では、図1のデータファイル名「temper10days.xlsx」が設定されている。データファイル名の設定後、「開く」ボタンをクリックすると、次に図3のダイアログウィンドウが表示される。

図3

 

描画図形を保存するファイル名を設定する。ファイル名は、ファイル拡張子が「.png」であることを除いて任意である。図3では、「MyFig.png」と設定されている。ファイル名の設定後、「保存」ボタンをクリックすると、図4の描画ウィンドウが表示される。

図4

 

ウィンドウの右上のXアイコンをクリックして閉じると、プログラムの終了である。図4の描画図形は、図3で設定したファイル名のファイルに保存されている。

 

 

リスト1 折れ線グラフ描画スクリプト例

 

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

 

x_name = data[0,0]

y_name = data[0, 1]

x_values = data[1:, 0]

y_values = data[1:, 1]

print(x_name)

print(x_values)

print(y_name)

print(y_values)

 

#       日本語表記の設定

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

 

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

plt.plot(x_values, y_values, 'b')               #   折れ線の描画

x_labels = ['{}'.format(v) for v in x_values]   #   横軸の値表示文字列

plt.xticks(x_values, x_labels, fontsize = 12)   #   横軸の目盛り

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

plt.ylabel(y_name, fontsize = 20)               #   縦軸の変数名

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

plt.show()                                      #   画像の表示

 

 

Up