質問編集履歴

2

やりたいことの修正

2023/09/21 04:00

投稿

sato0401
sato0401

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,76 +1,5 @@
1
1
  ### 実現したいこと
2
- pythonでexcelの時系列データを読み込んで、そのデータをグラフにリアルタイムで描画している様子を出力したいのですが、プログラミング歴が浅く、苦戦しています。どなたかご教授いただければ幸いです。
3
- 実現したいグラフは以下のようなグラフで、横軸が日付、縦軸がexcelのデータの移動平均をとった値です。
4
- このグラフを逐次的に描画している様子を出力したいです。
5
2
 
6
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-08-31/a60571d2-640f-43dc-9060-39d31c96d2eb.jpeg)
3
+ ![イメージ説明]
7
4
  ### 前提
8
- pythonでexcelの時系列データを読み込んで、グラフを作成しています。
9
- 全てのデータを一度でプロットするのはできるのですが、リアルタイムでグラフを描画している様子を出力することができません。
10
5
 
11
- excelの時系列データは以下のようなデータです。
12
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-08-30/7c22bb5f-38d9-4f4e-8faa-0a76a59f24f4.png)
13
-
14
- ### 発生している問題・エラーメッセージ
15
-
16
- ```
17
- エラーメッセージ
18
- A.append(data["DateTime"].values)のところで 'int' object is not subscriptable と出ます
19
-
20
- ### 該当のソースコード
21
-
22
- python
23
-
24
- ソースコード
25
- import pandas as pd
26
- import matplotlib.pyplot as plt
27
- from datetime import datetime as dt
28
- from matplotlib import animation
29
-
30
- dataname = 'データ名' #データ名の入力
31
- dt_head=dt(2019,5,6,10,38,37) #日付データの頭の時間
32
- dt_end=dt(2019,5,13,0,0,0) #日付データの末の時間
33
-
34
-
35
- #データの読み込み.日時をdatetime形式に変換
36
- data=pd.read_excel(dataname+'.xlsx',header=0,
37
- parse_dates={'DateTime': ['Date', 'Time']})
38
-
39
- fig = plt.figure()
40
-
41
- xlim = [0,1000]
42
- A, B = [], []
43
-
44
- x=data["tn"].values+data["fn"].values #tn,fn,tp,fpはexcelのデータです
45
- y=data["tp"].values+data["fp"].values
46
- z=x-y
47
- z_rolling = pd.DataFrame(z).rolling(window=500).mean() #(tn+fn)-(tp+fp)の移動平均をとったもの
48
-
49
- def plot(data):
50
- plt.cla() # 前のグラフを削除
51
-
52
- B.append(z_rolling)
53
- A.append(data["DateTime"].values)
54
-
55
- if len(A) > 1000: # 描画範囲を更新
56
- xlim[0]+=1
57
- xlim[1]+=1
58
-
59
- plt.plot(A, B) # 次のグラフを作成
60
- plt.title("sample animation (real time)")
61
- plt.ylim([0,1000])
62
- plt.xlim(xlim[0],xlim[1])
63
-
64
-
65
- # 1秒ごとにplot関数を呼び出してアニメーションを作成
66
- ani = animation.FuncAnimation(fig, plot, interval=1)
67
- plt.show()
68
-
69
- ### 試したこと
70
- 様々なサイトを調べまくりましたが、解決できなかったので投稿させていただきました。
71
-
72
- ### 補足情報(FW/ツールのバージョンなど)
73
-
74
- 使用環境・・python
75
- プログラムを動かすのにspyderを用いています。
76
-

1

実現したいことの追加説明

2023/08/31 02:40

投稿

sato0401
sato0401

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,9 @@
1
1
  ### 実現したいこと
2
2
  pythonでexcelの時系列データを読み込んで、そのデータをグラフにリアルタイムで描画している様子を出力したいのですが、プログラミング歴が浅く、苦戦しています。どなたかご教授いただければ幸いです。
3
+ 実現したいグラフは以下のようなグラフで、横軸が日付、縦軸がexcelのデータの移動平均をとった値です。
4
+ このグラフを逐次的に描画している様子を出力したいです。
3
5
 
4
-
6
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-08-31/a60571d2-640f-43dc-9060-39d31c96d2eb.jpeg)
5
7
  ### 前提
6
8
  pythonでexcelの時系列データを読み込んで、グラフを作成しています。
7
9
  全てのデータを一度でプロットするのはできるのですが、リアルタイムでグラフを描画している様子を出力することができません。
@@ -26,8 +28,8 @@
26
28
  from matplotlib import animation
27
29
 
28
30
  dataname = 'データ名' #データ名の入力
29
- dt_head=dt(2019,5,6,10,38,37) #データの頭の時間
31
+ dt_head=dt(2019,5,6,10,38,37) #日付データの頭の時間
30
- dt_end=dt(2019,5,13,0,0,0) #データの末の時間
32
+ dt_end=dt(2019,5,13,0,0,0) #日付データの末の時間
31
33
 
32
34
 
33
35
  #データの読み込み.日時をdatetime形式に変換