Nexus Lab. Blog

matplotlib、numpy、.CSVでグラフを描く

学校の宿題で”csv形式のファイルからデータを読み込んで、グラフを作る”
機会があった。
今後データサイエンスも触れるかもしれないので、今回はその方法をまとめておく。

numpyとmatplotlibを使った。

import numpy as np
import matplotlib.pyplot as plt


""" csvファイルからデータを取得してnumpy配列に入れる """

data = np.genfromtxt("prog15.csv",                      # csvファイルから配列を作る
                     delimiter=",",                     # 区切り
                     skip_header=1,)                    # 最初の1行を無視

""" 2軸のグラフを作る """

fig = plt.figure()

# 1つ目のグラフ
ax1 = fig.add_subplot(1, 1, 1)                          # 一つの図に収めたいplotの行数、列数、プロット番号
ax1.plot(data.T[3], label="CO2 Concentration(ppmv)")
ax1.legend(loc="lower right")                           # 凡例を表示
ax1.set_ylabel("CO2 Concentration(ppmv)")

# 2つ目のグラフ
ax2 = ax1.twinx()
ax2.plot(data.T[4], "g", label="AV Temperature")
ax2.legend(loc="best")                                  # 凡例を表示
ax2.set_ylabel("AV Temperature Change")

""" 調整 """

# x軸の年代ラベル用
age = []
for i in range(1958, 2010, 2):
    age.append(str(i))

# 軸の調整
ax1.set_yticks(np.linspace(300, 440, 20))               # y軸のメモリの範囲、目盛りの分割数
ax2.set_yticks(np.linspace(-0.7, 0.7, 7))

ax1.set_ylim(300, 450)
ax2.set_ylim(-0.7, 0.8)

ax1.set_xticklabels(age, rotation=60)                   # x軸ラベルに年代、60度回転

plt.xticks(np.linspace(0, 612, 26))                     # 612個のデータ、目盛りを26分割

# 最終調整
fig.set_size_inches(10, 6)                              # サイズ調整
plt.title("CO2 Concentration and Average Temperature")

plt.show()

f:id:nexusyuumilo:20180126200108p:plain