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()