使用plotly-破折号,我想创建一个绘图,其中x轴将是通过列表元素循环的结果,对于每个x值,y轴将是通过列表元素循环的结果嵌套在上一个代码中。这里是代码,在其中放置了2个for循环,以显示我要执行的操作:
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
datast = {
'items': {
'01': {
'time': 2,
'serial_no': 'unit_1',
'data': {
'expedition': 'Antarctic',
'devices':{
'battery': {
'life': 100,
'error': 5
},
'engine': {
'life': 200,
'error': 8
},
'rudder': {
'life': 50,
'error': 15
}
}
}
},
'02': {
'time': 5,
'serial_no': 'unit_7',
'data': {
'expedition': 'Pacific',
'devices': {
'battery': {
'life': 150,
'error': 3
},
'engine': {
'life': 250,
'error': 7
},
'rudder':{
'life': 90,
'error': 12
}
}
}
}
},
'author': 'blue',
'amount': 1500
}
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
dcc.Graph(
id='errors-plot',
figure={
'data': [go.Scatter(
x=(datast[datast['items'][j]['data']['devices'] == i]['items'][j]['time']),
y=datast[datast['items'][j]['data']['devices'] == i]['items'][j]['data']['devices'][i]['error'],
mode='markers',
name='errors',
text=i
) for j,i in datast['items'], datast[j]['data']['devices']
],
'layout': go.Layout(
title='Devices Software Messages',
xaxis={'title': 'Time'},
yaxis={'title': 'Number of messages'},
margin={'l': 100, 'b': 40, 't': 10, 'r': 50},
legend={'x': 0, 'y': 1},
hovermode='closest')
}
)
])
if __name__ == '__main__':
app.run_server()