前提
Pythonでx軸が時間,y軸が数値のグラフを作成するプログラムを作っています。
y軸はcsvファイルから数値を抽出しています.
プログラムの作成中に以下のエラーメッセージが発生しました。
csvファイルは雑ですが以下のようになってます.
filename , value
20230101_1200 , 300
20230101_1201 , 250
20230101_1202 , 350
: , :
実現したいこと
- x軸が時間でy軸が数値のグラフを作るプログラムを作成したい.
y軸の数値はcsvファイルから取り出したい.
グラフの枠はできるのだが,折れ線が出てこない.
また,上記のグラフを作れるプログラムであれば該当のソースコードじゃない方法も教えていただきたいです.
発生している問題・エラーメッセージ
ValueError: x and y must have same first dimension, but have shapes (25,) and (406,)
Python
1import matplotlib.pyplot as plt 2import matplotlib.dates as mdates 3import pandas as pd 4import tabulate 5import numpy as np 6 7### 該当のcsvファイル 8 9 10# テストデータ line6~15 11tm=pd.date_range("20191209 0:00" ,"20191210 0:00" , freq="60min") 12 13dt= pd.read_csv("readimage2.csv",encoding="SHIFT_JIS",usecols=[0,1]) 14 15df=pd.DataFrame(dt) 16 17print(df.to_markdown()) 18 19 20#ここから下はグラフ作成 21 22fig = plt.figure(facecolor="white") 23ax = fig.add_subplot( 24 211, 25 title="20221211 - 20221212", 26 xlabel="Time", 27 ylabel='Coordinate', 28 ) 29 30ax.plot(tm , df["value"] ) 31ax.grid(True) 32 33 34#ここから下はグラフの詳細 35 36#x軸の描画の範囲を指定。これを入れないと、時刻がうまくそろわない 37ax.set_xlim(tm[0] , tm[24]) 38 39 40#2時間おきにラベル 41Minute1=mdates.MinuteLocator(range(120),120) 42ax.xaxis.set_major_locator(Minute1) 43 44#30分おきに軸線 45Minute2=mdates.MinuteLocator(range(60),30) 46ax.xaxis.set_minor_locator(Minute2) 47 48#H:M のフォーマットでラベルを書く 49Minute_fmt = mdates.DateFormatter('%H:%M') 50ax.xaxis.set_major_formatter(Minute_fmt) 51 52 53#縦書きの指定 54plt.setp(ax.get_xticklabels(), rotation=45, ha="right") 55 56plt.show() #画像表示
試したこと
ax.plot()の中身のxとyを逆にするとエラーは吐かなくなるが折れ線が出てこない.
補足情報(FW/ツールのバージョンなど)
python3を使っていて,Macを利用しています.

回答1件
あなたの回答
tips
プレビュー