質問編集履歴

1

質問が多くて回答がつかなかったので、質問の数を減らしました。

2020/05/02 19:26

投稿

tomomonX
tomomonX

スコア28

test CHANGED
File without changes
test CHANGED
@@ -1,18 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Pythonで波形描写の勉強をしています。
3
+ Pythonで波形描写の勉強をしていて、参考にいろんなサイトのコードを見ています。
4
4
 
5
- https://blog.tsurubee.tech/entry/2017/11/15/080440
6
5
 
7
- のように異常検知のコードを勉強しているのですが、サイト内の
8
6
 
9
- ```Python
7
+ ###わからないこと
10
-
11
- curdoc().add_periodic_callback(update_data, 1000) #ms
12
-
13
- ```
14
-
15
- というコードがよくわからないです。Bokehというライブラリの関数です。
16
8
 
17
9
  https://qiita.com/SatoshiTerasaki/items/b7a5bf61f572aac1e358
18
10
 
@@ -30,146 +22,6 @@
30
22
 
31
23
  あれ?60は何?って思いました。
32
24
 
25
+ ###質問
33
26
 
34
-
35
- ### 質問1
36
-
37
- add_periodic_callback(関数、数字)で数字部分はどういう意味がありますか。
27
+ add_periodic_callback(update, 60)の60が何を意味しているの教えてください
38
-
39
-
40
-
41
- ### 質問2
42
-
43
- add_periodic_callback(関数、数字)で関数に()はなぜ不要なのでしょうか。
44
-
45
- そういうものだからと覚えたほうがいいですか。
46
-
47
-
48
-
49
- ### 質問3
50
-
51
- Bokehというライブラリとmatplotlibの違いはなんですか。
52
-
53
- BOkehがmatplotlibの上位互換でリアルタイムで描画させたいとき、動きをつけたい時が、Bokehを使うということでしょうか。
54
-
55
-
56
-
57
- ###該当コード
58
-
59
- ```Python
60
-
61
- import banpei
62
-
63
- import numpy as np
64
-
65
- import pandas as pd
66
-
67
- from bokeh.io import curdoc
68
-
69
- from bokeh.models import ColumnDataSource, DatetimeTickFormatter
70
-
71
- from bokeh.plotting import figure
72
-
73
- from datetime import datetime
74
-
75
- from math import radians
76
-
77
- from pytz import timezone
78
-
79
-
80
-
81
- data = []
82
-
83
- results = []
84
-
85
-
86
-
87
- def get_new_data():
88
-
89
- global data
90
-
91
- #ここでデータ取得(例:new_data = psutil.cpu_percent())
92
-
93
- data.append(new_data)
94
-
95
-
96
-
97
- def update_data():
98
-
99
- global results
100
-
101
- get_new_data()
102
-
103
- ret = model.stream_detect(data)
104
-
105
- results.append(ret)
106
-
107
- now = datetime.now(tz=timezone("Asia/Tokyo"))
108
-
109
- new_data = dict(x=[now], y=[data[-1]], ret=[results[-1]])
110
-
111
- source.stream(new_data, rollover=500)
112
-
113
-
114
-
115
- # Create Data Source
116
-
117
- source = ColumnDataSource(dict(x=[], y=[], ret=[]))
118
-
119
- # Create Banpei instance
120
-
121
- model = banpei.SST(w=30)
122
-
123
- # Draw a graph
124
-
125
- fig = figure(x_axis_type="datetime",
126
-
127
- x_axis_label="Datetime",
128
-
129
- plot_width=950,
130
-
131
- plot_height=650)
132
-
133
- fig.title.text = "Realtime monitoring with Banpei"
134
-
135
- fig.line(source=source, x='x', y='y', line_width=2, alpha=.85, color='blue', legend='observed data')
136
-
137
- fig.line(source=source, x='x', y='ret', line_width=2, alpha=.85, color='red', legend='change-point score')
138
-
139
- fig.circle(source=source, x='x', y='y', line_width=2, line_color='blue', color='blue')
140
-
141
- fig.legend.location = "top_left"
142
-
143
- # Configuration of the axis
144
-
145
- format = "%Y-%m-%d-%H-%M-%S"
146
-
147
- fig.xaxis.formatter = DatetimeTickFormatter(
148
-
149
- seconds=[format],
150
-
151
- minsec =[format],
152
-
153
- minutes=[format],
154
-
155
- hourmin=[format],
156
-
157
- hours =[format],
158
-
159
- days =[format],
160
-
161
- months =[format],
162
-
163
- years =[format]
164
-
165
- )
166
-
167
- fig.xaxis.major_label_orientation=radians(90)
168
-
169
- # Configuration of the callback
170
-
171
- curdoc().add_root(fig)
172
-
173
- curdoc().add_periodic_callback(update_data, 1000) #ms
174
-
175
- ```