csvファイルをグラフ化するpythonプログラム
台風一過;気圧をラズパイで追跡⇨10/7ブログでグラフ化した気圧と温度のグラフです。MS-ExcelやLibreOffice-Calcなどの表計算ソフトを使って描くことができましたが、Pythonで一気にグラフ化することができれば、日々の観測結果をグラフで残すことが自動化できます。そこで観測して、ファイルに書きためたCSVデータをグラフ化するpythonプログラムに挑戦しました。結局、できたのは下のグラフ縦軸はうまくいっているのですが、横軸はデータNoにしてやっとできました。日付や時間を横軸に取ろうとすると、「数値ではない」とエラーが出てしまい。縦1軸で表示するとうまくいきます。pandasでデータを抽出し縦2軸にするとうまくいかなくなります。今日まで悩んだのですが、結局だめでした。どなたか、2軸グラフでの横軸を数値でなく、テキストで表す方法を教えてくれませんか?python3のプログラムです。ーーーーーーーーーーーーーーーーーーーーー# sample2.csv から温度と圧力を読んでグラフ化# # /home/pi/tests/グラフ挿画/sample2.csv# no,temperature,humidity,pressure# 1,24.75,69.9,1027.31390625# 2,24.83,69.6,1027.52175781# 3,24.87,69.6,1027.53308594# 4,24.75,69.5,1027.8821875# 5,24.68,69.4,1028.2914843# .# .# $sudo apt-get install python3-pandas データアクセスmodule# $sudo apt-get install python3-matplotlib 多機能グラフmodule# を行ってから実行する# -*- coding: utf-8 -*-import pandas as pdimport matplotlib.pyplot as pltdata = pd.read_csv("/home/pi/tests/グラフ挿画/sample2.csv",index_col='time')# sample.csv では時間が文字列なのでERRORとなるのでcsv1列目を数値とした# csvからデータの切り出しdata1 = data.iloc[0:-1,0] # 1-end row / temp. coldata2 = data.iloc[0:-1,2] # 1-end row / Press. colfig, ax1 = plt.subplots()# 2つのグラフを同じx軸に関連させるax2=ax1.twinx() # temp. のグラフax1.plot(data1,color='r',label="Temp")# press. のグラフax2.plot(data2,label="Pres") # タイトルの表示ax1.set_title("Temperature & Pressuer" )ax1.set_ylabel("Temp[C]") # 軸の凡例をかくax2.set_ylabel("Press[hPa]") # 軸の凡例をかく# データの凡例を表示ax1.legend()ax2.legend(loc='upper center')plt.savefig("temp_press.png")plt.show()ーーーーーーーーーーーーーーーーーーーーーーーー完成すればカメラの記録と合わせて観測ステーションができます。完成したら、中身はともかく部活で使ってもらえればいいと思っています。なお、このプログラムは、小さなRspberryPi Zero WH上で動いています。お菓子のフリスクサイズです。