
dash.dependent에서 대시 가져오기 출력 가져오기, 입력
가져오기 dash_core_comComponents as dcc 가져오기 dash_html_comComponents as html
가져오기 플롯으로, 무작위
가져오기 플롯.graph_objs as go
from collections 가져오기 deque
from pandas_datareader.data 가져오기 DataReader
가져오기 시간, 무작위
앱 = dash.Dash('차량 데이터')
max_length = 20
회 = deque(maxlen=max_length)
oil_temps = deque(maxlen=max_length)
흡입_
온도 = deque(maxlen=max_length) 냉각수_temps = deque(maxlen=max_length)
rpms = deque(maxlen=max_length)
속도 = deque(maxlen=max_length )
throttle_pos = deque(maxlen=max_length)
data_dict = {"오일 온도":oil_temps,
"흡기 온도": intake_temps,
"냉각수 온도": coolant_temps,
"RPM":rpms,
"Speed":speeds,
"스로틀 위치":throttle_pos}
def update_obd_values(times, oil_temps, intake_temps, 냉각수_temps, rpms, 속도, throttle_pos):
times.append(time.time())
if len(times) == 1:
#starting relevant values
oil_temps.append(random.randrange(180,230))
intake_temps.append(random.randrange(95,115))
coolant_temps.append(random.randrange(170,220))
rpms.append(random.randrange(1000,9500))
speeds.append(random.randrange(30,140))
throttle_pos.append(random.randrange(10,90))
else:
for data_of_interest in [oil_temps, intake_temps, coolant_temps, rpms, speeds, throttle_pos]:
data_of_interest.append(data_of_interest[-1]+data_of_interest[-1]*random.uniform(-0.0001,0.0001))
return times, oil_temps, intake_temps, coolant_temps, rpms, speeds, throttle_pos
회, 오일 온도, 흡기 온도, 냉각수_온도, rpms, 속도, throttle_pos = update_obd_values(회, 오일 온도, 흡기_온도, 냉각수_온도, rpms, 속도, 스로틀_pos)
app.layout = html.Div([
html.Div([
html.H2('차량 데이터',
style={'float': '왼쪽',
}),
]),
dcc.Dropdown(id='차량 데이터' -name',
options=[{'label': s, 'value': s}
for s in data_dict.keys()],
value=['냉각수 온도','오일 온도','흡기 온도'],
multi =True
),
html.Div(children=html.Div(id='graphs'), className='row'),
dcc.Interval(
id='graph-update',
간격=100),
], className=" 컨테이너",스타일={'너비':'98%','margin-left':10,'margin-right':10,'max-width':50000})
@app.callback(
dash.dependent.Output('graphs','children'),
[dash.dependent.Input('vehicle-data-name',
'value'),dash.dependent.Input('graph-update ', 'n_intervals')]
)
def update_graph(data_names , n_intervals):
graphs = []
update_obd_values(times, oil_temps, intake_temps, 냉각수_temps, rpms,
속도, throttle_pos) if len(data_names)>2:
class_choice = 'col s12 m6 l4'
elif len(data_names) = = 2:
class_choice = 'col s12 m6 l6'
else:
class_choice = 'col s12'
for data_name in data_names:
data = go.Scatter(
x=list(times),
y=list(data_dict[data_name]),
name='Scatter',
fill="tozeroy",
fillcolor="#6897bb"
)
graphs.append(html.Div(dcc.Graph(
id=data_name,
animate=True,
figure={'data': [data],'layout' : go.Layout(xaxis=dict(range=[min(times),max(times)]),
yaxis=dict(range=[min(data_dict[data_name]),max(data_dict[data_name])]),
margin={'l':50,'r':1,'t':45,'b':1},
title='{}'.format(data_name))}
), className=class_choice))
return graphs
external_css = ["https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"]
external_css의 CSS용:
app.css.append_css({"external_url": css})
external_js =
['https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js']
external_js의 js:
app.scripts.append_script({'external_url': js})
만약에이름== '기본':
app.run_server(디버그=True)