User Tools

Site Tools


Sidebar

python:matplotlib:データの読み込み

This is an old revision of the document!


概要

研究でmatplotlibを使う場合、実験データや数値計算データなどの外部のファイルに保存されたデータを読み込んでプロットすることが多いと思います。 その方法について簡単な例を元に紹介します。

方法

データの読み込み

例として2017年の京都の月別平均気温のプロットをしてみましょう。 左から月、日平均気温、日最高気温、最低気温です。

#month average highest lowest
 1   4.8   9.3   1.5
 2   5.1   9.6   1.7
 3   8.2  13.5   3.7
 4  14.8  20.5   9.8
 5  20.9  27.0  15.8
 6  22.5  28.1  17.8
 7  28.4  33.4  25.1
 8  28.7  33.6  25.1
 9  23.7  28.3  19.8
10  18.0  21.7  15.0
11  11.2  16.1   7.1
12   5.6  10.0   2.1

http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s1.php?prec_no=61&block_no=47759&year=2017&month=1&day=&view= より作成)

プロット

NumPyのgenfromtxtを使ってデータを読み込みます。 data[:,n]にn+1列目のデータが入ります。

temp.py
import numpy as np
import matplotlib.pyplot as plt
 
data = np.genfromtxt("kyoto.dat")
 
plt.plot(data[:,0], data[:,1], label="average")
plt.plot(data[:,0], data[:,2], label="highest")
plt.plot(data[:,0], data[:,3], label="lowest")
 
plt.xlabel("Month")
plt.ylabel("Temperature")
 
plt.legend()
 
plt.show()

進んだ使い方

デフォルトでは行頭が#だとコメント行だと判断され、スペースをデータの区切りとして扱います。 これを変更することも出来ます。

例えば次のようにデータが用意されているとします。

!month average highest lowest
 1,   4.8,   9.3,   1.5
 2,   5.1,   9.6,   1.7
 3,   8.2,  13.5,   3.7
 4,  14.8,  20.5,   9.8
 5,  20.9,  27.0,  15.8
 6,  22.5,  28.1,  17.8
 7,  28.4,  33.4,  25.1
 8,  28.7,  33.6,  25.1
 9,  23.7,  28.3,  19.8
10,  18.0,  21.7,  15.0
11,  11.2,  16.1,   7.1
12,   5.6,  10.0,   2.1

コメント行の行頭の文字はcommentで、データの区切り文字はdelimiterで指定します。

data = np.genfromtxt("kyoto.dat", comment="!", delimiter=',')
python/matplotlib/データの読み込み.1516630824.txt.gz · Last modified: 2021/06/27 21:59 (external edit)