teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

9

末尾に画像を追加

2021/08/23 04:36

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -346,4 +346,6 @@
346
346
  plt.gca().set_yticks([0, 1])
347
347
  plt.tight_layout()
348
348
  plt.show()
349
- ```
349
+ ```
350
+
351
+ ![イメージ説明](ee5a68e8fe9b081164c1ee52fe31ae57.png)

8

回答の末尾に書き直したコードを追加

2021/08/23 04:36

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -306,4 +306,44 @@
306
306
  ```
307
307
 
308
308
  ~~とするとよいと思います。
309
- 描画のためにかかる時間が加算されるので、これでも1秒おきにならないと思うので、その時は`plt.pause(1)`の数字を、1 -> 0.9 -> 0.8 -> 0.7 -> 0.6... とどんどん小さくして試してみるといいです。私の環境では、0.1 でもちゃんと描画されました。~~
309
+ 描画のためにかかる時間が加算されるので、これでも1秒おきにならないと思うので、その時は`plt.pause(1)`の数字を、1 -> 0.9 -> 0.8 -> 0.7 -> 0.6... とどんどん小さくして試してみるといいです。私の環境では、0.1 でもちゃんと描画されました。~~
310
+
311
+ ---
312
+
313
+ なるべく元のプログラムを変更しない形に書き直したコードを追記します。
314
+ 稼働率の計算・表示の部分のコードは削除してあります。データの補完の開始時刻は7:00にしてあります。
315
+
316
+ ```python
317
+ import datetime
318
+
319
+ import pandas as pd
320
+ import matplotlib.pyplot as plt
321
+ import matplotlib.dates as mdates
322
+
323
+ data=pd.read_csv('mydata'+nowday+'.csv', header=None, names=[0,1], index_col=0, parse_dates=True)
324
+ x=data.index
325
+ y=data.iloc[:,0]
326
+
327
+ d_today = datetime.date.today()
328
+ dt_start = datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0)
329
+ df_start = pd.DataFrame([[0, 0]], index=[dt_start])
330
+ d_tomorrow = d_today + datetime.timedelta(days=1)
331
+ dt_end = datetime.datetime(d_tomorrow.year, d_tomorrow.month, d_tomorrow.day)
332
+ df_end = pd.DataFrame([[0, 0]], index=[dt_end])
333
+ data = df_start.append([data, df_end])
334
+ data = data.asfreq('min', fill_value=0)
335
+
336
+ plt.figure(figsize=(12.8, 4.8))
337
+ plt.xlabel("時刻")
338
+ plt.ylabel("1=稼働,0=停止")
339
+ plt.bar(x,y,width=0.0007)
340
+ plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=1))
341
+ plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
342
+ plt.gca().set_xlim(
343
+ xmin=datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0),
344
+ xmax=dt_end
345
+ )
346
+ plt.gca().set_yticks([0, 1])
347
+ plt.tight_layout()
348
+ plt.show()
349
+ ```

7

回答に文言を追加

2021/08/23 04:11

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -261,7 +261,7 @@
261
261
  sleep(60)
262
262
  ```
263
263
 
264
- あるいは FileNotFoundError を利用して次のようにすることもできます。
264
+ あるいは FileNotFoundError を利用して次のようにすることもできます。この場合は条件としては、厳密には「ファイルがある、ファイルがない」になります。
265
265
 
266
266
  ```python
267
267
  while True:

6

回答の追記、および既存の回答の文章の修正

2021/08/20 22:42

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -251,8 +251,32 @@
251
251
 
252
252
  ---
253
253
 
254
+ 「観測結果をファイルに保存しているプログラム」と、「観測結果をグラフに表示しているプログラム」は別々とのことですが、おそらく「点灯パターンによってはグラフの読み込みをさせないようにしたかった」ために、前者のプログラムを後者に流用されたのだと思います。
254
- (追記)すみませんグラフ描画されるのは約1分に1回ね。簡略化したプログラムでテストしていたら勘違いしてしいました以下消します。
255
+ しかしご自分でも書かれているように「条件としては点灯、点灯がない(休日など)2パターン良」いのであれば、とえば以下のようにプログラムを簡略化することができそうすればプロットのためのコード、関数にするまでもなく、ひとつになります。
255
256
 
257
+ ```python
258
+ while True:
259
+ if inputVal0 > 2000 or inputVal1 > 2000:
260
+ # プロットのためのコード
261
+ sleep(60)
262
+ ```
263
+
264
+ あるいは FileNotFoundError を利用して次のようにすることもできます。
265
+
266
+ ```python
267
+ while True:
268
+ try:
269
+ # プロットのためのコード
270
+ except FileNotFoundError:
271
+ continue
272
+ finally:
273
+ sleep(60)
274
+ ```
275
+
276
+ ---
277
+
278
+ (追記)すみません、以下は取り消します。グラフが描画されるのは約1分に1回でしたね。簡略化したプログラムでテストしていたら勘違いをしてしまいました。
279
+
256
280
  ~~質問文にプログラムの全体が掲載されていないので正確には分からないのですが、プログラムのループ構造の大枠は以下のようになっているのではないでしょうか?~~
257
281
 
258
282
  ```python

5

間違えている箇所があったので打ち消し線で削除および補記

2021/08/20 22:26

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -251,8 +251,10 @@
251
251
 
252
252
  ---
253
253
 
254
- 質問文にプログラムの全体掲載されていないで正確には分からないのすが、プログラムのループ構造の大枠は以下のようになっているのではなょうか?
254
+ (追記)すみません、グラ描画されのは約1に1回したね。簡略化したプログラムでテストしていたら勘違てしまいました。以下は取り消します。
255
255
 
256
+ ~~質問文にプログラムの全体が掲載されていないので正確には分からないのですが、プログラムのループ構造の大枠は以下のようになっているのではないでしょうか?~~
257
+
256
258
  ```python
257
259
  while true:
258
260
  if inputVal0>2000:
@@ -265,8 +267,8 @@
265
267
  sleep(1)
266
268
  ```
267
269
 
268
- この構造だと、プロットのプログラム中でも plt.pause(1) を行なっていますので、稼働中は sleep(1) と合わせて2秒おきにループが回ることになりますがそれで大丈夫ですか?
270
+ ~~この構造だと、プロットのプログラム中でも plt.pause(1) を行なっていますので、稼働中は sleep(1) と合わせて2秒おきにループが回ることになりますがそれで大丈夫ですか?~~
269
- もし1秒おきにループが回った方がいいなら、
271
+ ~~もし1秒おきにループが回った方がいいなら、~~
270
272
 
271
273
  ```python
272
274
  while true:
@@ -279,5 +281,5 @@
279
281
  sleep(1)
280
282
  ```
281
283
 
282
- とするとよいと思います。
284
+ ~~とするとよいと思います。
283
- 描画のためにかかる時間が加算されるので、これでも1秒おきにならないと思うので、その時は`plt.pause(1)`の数字を、1 -> 0.9 -> 0.8 -> 0.7 -> 0.6... とどんどん小さくして試してみるといいです。私の環境では、0.1 でもちゃんと描画されました。
285
+ 描画のためにかかる時間が加算されるので、これでも1秒おきにならないと思うので、その時は`plt.pause(1)`の数字を、1 -> 0.9 -> 0.8 -> 0.7 -> 0.6... とどんどん小さくして試してみるといいです。私の環境では、0.1 でもちゃんと描画されました。~~

4

説明を追加

2021/08/19 12:20

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -219,6 +219,8 @@
219
219
 
220
220
  で 0.0007 がほぼ1分の幅となります。
221
221
 
222
+ もうひとつ補足すると、`plt.gca()`で取得されるものと、`ax = fig.add_subplot()`の`ax`は、同じものです。
223
+
222
224
  ---
223
225
 
224
226
  プログラム中にまったく同じコード(プロットのためのコード)が2つ出てくるので、関数にくくり出して一つだけにするとよいと思います。

3

ラベルの文字列が間違っていたのでコードを訂正

2021/08/19 11:21

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -71,7 +71,7 @@
71
71
  xmin=datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0),
72
72
  xmax=dt_end
73
73
  )
74
- ax.set_xlabel("時 ", fontsize='large', labelpad=10)
74
+ ax.set_xlabel("時 ", fontsize='large', labelpad=10)
75
75
 
76
76
  ax.set_yticks([0, 1])
77
77
  ax.set_yticklabels(["停止", "稼働"])

2

コードの一部を変更

2021/08/19 11:06

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -13,6 +13,7 @@
13
13
  データは「matplotlibにて読み取っているエクセルデータ」に貼っていただいたものを使っていますが(データの読み込みに使っているのはmatplotlibではなくpandasでしょう)、実際には記録自体がされていない時間もあるとのことなので(「光センサーにて記録しているエクセルデータ」の図も23:27と23:28が欠けている)、8時台の連続した2分、9時台からも1分のデータを間引いています。
14
14
 
15
15
  "稼働時間 xx 時間 機械稼働率 xx %" の文字列については、現在の実際のプロットでどこに配置されているのか質問文からは分からなかったので、適当なところに配置しています。
16
+
16
17
  y軸のラベル "1=稼働,0=停止" は削除して、代わりに軸目盛りラベルを [0, 1] から [停止, 稼働] に変更しています。
17
18
 
18
19
  上記プロットのコードは以下です。
@@ -41,12 +42,12 @@
41
42
  data = data.asfreq('min', fill_value=0)
42
43
  observed_data_num = len(data)
43
44
 
44
- dt_now = datetime.datetime.now()
45
+ d_today = datetime.date.today()
45
- dt_start = datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 0, 1)
46
+ dt_start = datetime.datetime(d_today.year, d_today.month, d_today.day, 0, 1)
46
47
  df_start = pd.DataFrame([[0, 0]], index=[dt_start])
47
48
 
48
- dt_tomorrow = dt_now + datetime.timedelta(days=1)
49
+ d_tomorrow = d_today + datetime.timedelta(days=1)
49
- dt_end = datetime.datetime(dt_tomorrow.year, dt_tomorrow.month, dt_tomorrow.day)
50
+ dt_end = datetime.datetime(d_tomorrow.year, d_tomorrow.month, d_tomorrow.day)
50
51
  df_end = pd.DataFrame([[0, 0]], index=[dt_end])
51
52
 
52
53
  data = df_start.append([data, df_end])
@@ -67,7 +68,7 @@
67
68
  ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
68
69
  ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
69
70
  ax.set_xlim(
70
- xmin=datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 7, 0),
71
+ xmin=datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0),
71
72
  xmax=dt_end
72
73
  )
73
74
  ax.set_xlabel("時 間", fontsize='large', labelpad=10)
@@ -135,8 +136,8 @@
135
136
  `observed_data_num = len(data)`でデータ数(何分観測したか)を取得しておきます。
136
137
 
137
138
  ```python
138
- dt_now = datetime.datetime.now()
139
+ d_today = datetime.date.today()
139
- dt_start = datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 0, 1)
140
+ dt_start = datetime.datetime(d_today.year, d_today.month, d_today.day, 0, 1)
140
141
  df_start = pd.DataFrame([[0, 0]], index=[dt_start])
141
142
  ```
142
143
 
@@ -147,8 +148,8 @@
147
148
  |2021-08-19 00:01:00|0|0|
148
149
 
149
150
  ```python
150
- dt_tomorrow = dt_now + datetime.timedelta(days=1)
151
+ d_tomorrow = d_today + datetime.timedelta(days=1)
151
- dt_end = datetime.datetime(dt_tomorrow.year, dt_tomorrow.month, dt_tomorrow.day)
152
+ dt_end = datetime.datetime(d_tomorrow.year, d_tomorrow.month, d_tomorrow.day)
152
153
  df_end = pd.DataFrame([[0, 0]], index=[dt_end])
153
154
  ```
154
155
 

1

説明を追加

2021/08/19 10:51

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -2,4 +2,279 @@
2
2
 
3
3
  plt.xlim(下限値, 上限値)
4
4
 
5
- で、グラフに表示するX軸の範囲を設定することができます。
5
+ で、グラフに表示するX軸の範囲を設定することができます。
6
+
7
+ ---
8
+
9
+ 以下プロット例です(plt.xlim()ではなくax.set_xlim()を使用していますが、やっていることは同じです)。
10
+
11
+ ![イメージ説明](e3ab69d6017e1ca879cfecd2994298bc.png)
12
+
13
+ データは「matplotlibにて読み取っているエクセルデータ」に貼っていただいたものを使っていますが(データの読み込みに使っているのはmatplotlibではなくpandasでしょう)、実際には記録自体がされていない時間もあるとのことなので(「光センサーにて記録しているエクセルデータ」の図も23:27と23:28が欠けている)、8時台の連続した2分、9時台からも1分のデータを間引いています。
14
+
15
+ "稼働時間 xx 時間 機械稼働率 xx %" の文字列については、現在の実際のプロットでどこに配置されているのか質問文からは分からなかったので、適当なところに配置しています。
16
+ y軸のラベル "1=稼働,0=停止" は削除して、代わりに軸目盛りラベルを [0, 1] から [停止, 稼働] に変更しています。
17
+
18
+ 上記プロットのコードは以下です。
19
+
20
+ ```python
21
+ import datetime
22
+ from io import StringIO
23
+
24
+ import pandas as pd
25
+ import matplotlib.pyplot as plt
26
+ import matplotlib.dates as mdates
27
+
28
+ operation_data = """7:58 1 0
29
+ 7:59 1 0
30
+ 8:00 1 0
31
+ 8:01 1 0
32
+ 8:02 1 0
33
+ (中略)
34
+ 10:18 1 0
35
+ 10:19 1 0
36
+ 10:20 1 0
37
+ 10:21 1 0
38
+ 10:22 1 0"""
39
+
40
+ data = pd.read_csv(StringIO(operation_data), sep='\s+', header=None, names=[0,1], index_col=0, parse_dates=True)
41
+ data = data.asfreq('min', fill_value=0)
42
+ observed_data_num = len(data)
43
+
44
+ dt_now = datetime.datetime.now()
45
+ dt_start = datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 0, 1)
46
+ df_start = pd.DataFrame([[0, 0]], index=[dt_start])
47
+
48
+ dt_tomorrow = dt_now + datetime.timedelta(days=1)
49
+ dt_end = datetime.datetime(dt_tomorrow.year, dt_tomorrow.month, dt_tomorrow.day)
50
+ df_end = pd.DataFrame([[0, 0]], index=[dt_end])
51
+
52
+ data = df_start.append([data, df_end])
53
+ data = data.asfreq('min', fill_value=0)
54
+
55
+ running_data_num = data[0].sum()
56
+ operation_rate = round(running_data_num / observed_data_num * 100, 1)
57
+ operation_time = round(observed_data_num / 60, 1)
58
+ operation_info = f"稼働時間 {operation_time} 時間 機械稼働率 {operation_rate} %"
59
+
60
+ fig = plt.figure(figsize=(12.8, 4.8))
61
+ ax = fig.add_subplot()
62
+
63
+ ax.text(0.5, 1.03, operation_info, transform=ax.transAxes, fontsize=12, horizontalalignment="center")
64
+
65
+ ax.bar(data.index, data[0], width=0.0007)
66
+
67
+ ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
68
+ ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
69
+ ax.set_xlim(
70
+ xmin=datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 7, 0),
71
+ xmax=dt_end
72
+ )
73
+ ax.set_xlabel("時 間", fontsize='large', labelpad=10)
74
+
75
+ ax.set_yticks([0, 1])
76
+ ax.set_yticklabels(["停止", "稼働"])
77
+
78
+ plt.tight_layout()
79
+ plt.show()
80
+ ```
81
+
82
+ データの扱いについては説明が必要かと思いますので、以下に説明します。
83
+
84
+ ```python
85
+ data = pd.read_csv(StringIO(operation_data), sep='\s+', header=None, names=[0,1], index_col=0, parse_dates=True)
86
+ ```
87
+
88
+ `header=None`でデータの1行目が列名として読み込まれることを防ぎます。
89
+ `names=[0,1]`で列名を振り直します(後でDataFrameを結合するために必要)。
90
+ `index_col=0, parse_dates=True`で時間の列を日付型(datetime64[ns]型)のインデックスとして読み込みます。日付は自動的に今日の日付が設定されます。
91
+
92
+ 読み込み結果は次のようになります。
93
+
94
+ ||0|1|
95
+ |:--|:--:|--:|
96
+ |2021-08-19 07:58:00|1|0|
97
+ |2021-08-19 07:59:00|1|0|
98
+ |2021-08-19 08:00:00|1|0|
99
+ |2021-08-19 08:01:00|1|0|
100
+ |2021-08-19 08:02:00|1|0|
101
+ |...|||
102
+ |2021-08-19 10:18:00|1|0|
103
+ |2021-08-19 10:19:00|1|0|
104
+ |2021-08-19 10:20:00|1|0|
105
+ |2021-08-19 10:21:00|1|0|
106
+ |2021-08-19 10:22:00|1|0|
107
+
108
+ ```python
109
+ data = data.asfreq('min', fill_value=0)
110
+ observed_data_num = len(data)
111
+ ```
112
+
113
+ `data.asfreq('min', fill_value=0)`で、欠落しているインデックス(記録が行われていない時間)を分単位で補完し、値を 0 で埋めます。たとえば
114
+
115
+ ||0|1|
116
+ |:--|:--:|--:|
117
+ |...|||
118
+ |2021-08-19 08:26:00|1|0|
119
+ |2021-08-19 08:29:00|1|0|
120
+ |...|||
121
+
122
+ の箇所は
123
+
124
+ ||0|1|
125
+ |:--|:--:|--:|
126
+ |...|||
127
+ |2021-08-19 08:26:00|1|0|
128
+ |2021-08-19 08:27:00|0|0|
129
+ |2021-08-19 08:28:00|0|0|
130
+ |2021-08-19 08:29:00|1|0|
131
+ |...|||
132
+
133
+ と補完されます。
134
+
135
+ `observed_data_num = len(data)`でデータ数(何分観測したか)を取得しておきます。
136
+
137
+ ```python
138
+ dt_now = datetime.datetime.now()
139
+ dt_start = datetime.datetime(dt_now.year, dt_now.month, dt_now.day, 0, 1)
140
+ df_start = pd.DataFrame([[0, 0]], index=[dt_start])
141
+ ```
142
+
143
+ その日の 0 時 1 分のデータを作成します。値は 0 で埋めます。df_startの内容は以下です。
144
+
145
+ ||0|1|
146
+ |:--|:--:|--:|
147
+ |2021-08-19 00:01:00|0|0|
148
+
149
+ ```python
150
+ dt_tomorrow = dt_now + datetime.timedelta(days=1)
151
+ dt_end = datetime.datetime(dt_tomorrow.year, dt_tomorrow.month, dt_tomorrow.day)
152
+ df_end = pd.DataFrame([[0, 0]], index=[dt_end])
153
+ ```
154
+
155
+ その日の翌日の 0 時 0 分のデータを作成します。値は 0 で埋めます。df_endの内容は以下です。
156
+
157
+ ||0|1|
158
+ |:--|:--:|--:|
159
+ |2021-08-20 00:00:00|0|0|
160
+
161
+ ```python
162
+ data = df_start.append([data, df_end])
163
+ data = data.asfreq('min', fill_value=0)
164
+ ```
165
+
166
+ その日の 0 時 1 分のデータと、観測済みのデータと、翌日の 0 時 0 分のデータを結合します。
167
+
168
+ ||0|1|
169
+ |:--|:--:|--:|
170
+ |2021-08-19 00:01:00|0|0|
171
+ |2021-08-19 07:58:00|1|0|
172
+ |2021-08-19 07:59:00|1|0|
173
+ |2021-08-19 08:00:00|1|0|
174
+ |2021-08-19 08:01:00|1|0|
175
+ |2021-08-19 08:02:00|1|0|
176
+ |...|||
177
+ |2021-08-19 10:18:00|1|0|
178
+ |2021-08-19 10:19:00|1|0|
179
+ |2021-08-19 10:20:00|1|0|
180
+ |2021-08-19 10:21:00|1|0|
181
+ |2021-08-19 10:22:00|1|0|
182
+ |2021-08-20 00:00:00|0|0|
183
+
184
+ `data.asfreq('min', fill_value=0)`で再び、欠落しているインデックスを補完し、値を 0 で埋めます。結果として次のようなデータが完成します。
185
+
186
+ ||0|1|
187
+ |:--|:--:|--:|
188
+ |2021-08-19 00:01:00|0|0|
189
+ |2021-08-19 00:02:00|0|0|
190
+ |2021-08-19 00:03:00|0|0|
191
+ |2021-08-19 00:04:00|0|0|
192
+ |2021-08-19 00:05:00|0|0|
193
+ |...|||
194
+ |2021-08-19 07:58:00|1|0|
195
+ |2021-08-19 07:59:00|1|0|
196
+ |2021-08-19 08:00:00|1|0|
197
+ |2021-08-19 08:01:00|1|0|
198
+ |2021-08-19 08:02:00|1|0|
199
+ |...|||
200
+ |2021-08-19 23:56:00|0|0|
201
+ |2021-08-19 23:57:00|0|0|
202
+ |2021-08-19 23:58:00|0|0|
203
+ |2021-08-19 23:59:00|0|0|
204
+ |2021-08-20 00:00:00|0|0|
205
+
206
+ このデータをプロットします。
207
+
208
+ プロットのコードについては説明は省略させていただきますが、1箇所だけ補足しますと、
209
+
210
+ ```pyton
211
+ ax.bar(data.index, data[0], width=0.0007)
212
+ ```
213
+
214
+ 日付型のデータをX軸にすると、`width=1.0`は 24 時間の幅になります。
215
+ ここではひとつのデータは1分の幅になって欲しいので、
216
+
217
+ 1 ÷ (24 × 60) = 0.00069444
218
+
219
+ で 0.0007 がほぼ1分の幅となります。
220
+
221
+ ---
222
+
223
+ プログラム中にまったく同じコード(プロットのためのコード)が2つ出てくるので、関数にくくり出して一つだけにするとよいと思います。
224
+ また、描画のたびにFigureとAxesを生成するのではなく、最初に一つだけ作って、それを最後まで使うとよいと思います。以下のような感じです。
225
+
226
+ ```python
227
+ def plot_operation(fig, ax):
228
+ data = pd.read_csv(StringIO(operation_data), sep='\s+', header=None, names=[0,1], index_col=0, parse_dates=True)
229
+
230
+ (中略)
231
+
232
+ #fig = plt.figure(figsize=(12.8, 4.8)) # <- 削除
233
+ #ax = fig.add_subplot() # <- 削除
234
+ ax.cla() # <- 追加
235
+
236
+ (中略)
237
+
238
+ plt.tight_layout()
239
+ plt.draw()
240
+ plt.pause(1)
241
+
242
+ fig = plt.figure(figsize=(12.8, 4.8))
243
+ ax = fig.add_subplot()
244
+ while True:
245
+ plot_operation(fig, ax)
246
+ sleep(1)
247
+ ```
248
+
249
+ ---
250
+
251
+ 質問文にプログラムの全体が掲載されていないので正確には分からないのですが、プログラムのループ構造の大枠は以下のようになっているのではないでしょうか?
252
+
253
+ ```python
254
+ while true:
255
+ if inputVal0>2000:
256
+ # プロットのプログラム
257
+ else:
258
+ if inputVal0>2000:
259
+ # プロットのプログラム
260
+ else:
261
+ pass
262
+ sleep(1)
263
+ ```
264
+
265
+ この構造だと、プロットのプログラム中でも plt.pause(1) を行なっていますので、稼働中は sleep(1) と合わせて2秒おきにループが回ることになりますがそれで大丈夫ですか?
266
+ もし1秒おきにループが回った方がいいなら、
267
+
268
+ ```python
269
+ while true:
270
+ if inputVal0>2000:
271
+ # プロットのプログラム
272
+ else:
273
+ if inputVal0>2000:
274
+ # プロットのプログラム
275
+ else:
276
+ sleep(1)
277
+ ```
278
+
279
+ とするとよいと思います。
280
+ 描画のためにかかる時間が加算されるので、これでも1秒おきにならないと思うので、その時は`plt.pause(1)`の数字を、1 -> 0.9 -> 0.8 -> 0.7 -> 0.6... とどんどん小さくして試してみるといいです。私の環境では、0.1 でもちゃんと描画されました。