Guest User

Untitled

a guest
Mar 21st, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.22 KB | None | 0 0
  1. """ app plotly dash"""
  2. import dash
  3. from dash.dependencies import Input, Output, State, Event
  4. import dash_core_components as dcc
  5. import dash_html_components as html
  6. import plotly.graph_objs as go
  7. import numpy as np
  8. import time
  9. import sys
  10. import datetime as dt
  11. import matplotlib
  12. matplotlib.use(“Agg”)
  13. import matplotlib.pylab as plt
  14. import base64
  15. from login import server as server
  16. import json
  17.  
  18. def global_store(data, strings):
  19. global_data = [v for i,v in enumerate(data)]
  20. print(‘Computing value…’)
  21. return [global_data, strings]
  22.  
  23. app = dash.Dash(name=‘app’, server=server, csrf_protect=False,
  24. url_base_pathname=’/app’)
  25.  
  26. app.layout = html.Div([
  27. html.Div([
  28.  
  29. dcc.Interval(
  30. id='interval-component',
  31. interval=5*60*60*1000, # in milliseconds
  32. n_intervals=0
  33. ),
  34.  
  35. html.Button(id='run', n_clicks=0, children='Run'),
  36.  
  37. html.Div(id='signal', style={'display': 'none'}),
  38. html.Div(id='div-error'),
  39. ], style={'display': 'inline-block', 'textAlign': 'center',
  40. 'marginLeft':'27%', 'marginTop':0}),
  41.  
  42. html.Div([
  43. dcc.Slider(id='index-slider3', min=0, max=loops, value=0, step=1,),
  44. ], style={'width': '35%'}),
  45.  
  46. # Graphs
  47.  
  48. html.Div([
  49. html.H5("Waveform 1", style={'display': 'inline-block', 'marginLeft': 300}),
  50. dcc.Graph(id='fig1', style={'width':850, 'height': 450, 'marginTop':0, 'marginBottom':0}),],
  51. style={'width': '60%', 'display': 'inline-block','marginTop': 0}),
  52.  
  53. html.Div([
  54. html.H5("Waveform 2", style={'display': 'inline-block', 'marginLeft': 300}),
  55. dcc.Graph(id='fig2', style={'width':850, 'height': 450, 'marginTop':0, 'marginBottom':0})],
  56. style={'width': '60%', 'display': 'inline-block','marginTop': 0}),
  57.  
  58. html.Div([
  59. html.H5("Waveform 3", style={'display': 'inline-block', 'marginLeft': 300}),
  60. dcc.Graph(id='fig3', style={'width':850, 'height': 450, 'marginTop':0, 'marginBottom':0})],
  61. style={'width': '60%', 'display': 'inline-block','marginTop': 0}),
  62.  
  63. html.Div([
  64. html.H5("Waveform 4", style={'display': 'inline-block', 'marginLeft': 300}),
  65. html.Img(id='fig4', style={'width':850, 'height': 450, 'marginTop':0, 'marginBottom':0})],
  66. style={'width': '60%', 'display': 'inline-block','marginTop': 0}),
  67. ])
  68.  
  69. @app.callback(Output(‘interval-component’, ‘interval’),
  70. [Input(‘run’, ‘n_clicks’)])
  71. def disable_interval(n_clicks):
  72. if n_clicks%2 == 0:
  73. return 106060*1000
  74. else:
  75. return 10 * 1000
  76.  
  77. @app.callback(Output(‘signal’, ‘children’),
  78. [Input(‘interval-component’, ‘n_intervals’)],)
  79. def compute_value(n_intervals):
  80. datas = np.random.randint(1000, size=5000)
  81. datass = np.random.randint(2, size=(5000,5000))
  82. plt.figure(figsize=(8, 6))
  83. plt.pcolormesh(datas [0:10], datass [10:100], datas [10:100,0:10])
  84. plt.colorbar()
  85. plt.title(‘Waveform at time:
  86. {}.’.format(dt.datetime.now().strftime(’%c’)))
  87. plt.savefig(‘spectrum.png’)
  88. image_filename = ‘wave4.png’ # replace with your own image
  89. encoded_image = base64.b64encode(open(image_filename, ‘rb’).read())
  90. base64_string = encoded_image.decode(‘utf-8’)
  91. global_data = global_store(datas, base64_string)
  92. return json.dumps(global_data)
  93.  
  94. @app.callback(Output(‘div-error’, ‘children’), [Input(‘signal’,
  95. ‘children’)], [], [Event(‘interval-component’, ‘interval’)])
  96. def update_error(data):
  97. if ‘data’ in data:
  98. return data
  99.  
  100. @app.callback(Output(‘fig1’, ‘figure’), [Input(‘signal’, ‘children’)], [],
  101. [Event(‘interval-component’, ‘interval’)])
  102. def update_figure1(data):
  103. data = json.loads(data)
  104. traces = []
  105. traces.append(go.Scatter(
  106. x=list(range(len(data[0]))),
  107. y=data[0],
  108. mode=‘lines’,#+markers’,
  109. opacity=0.7,
  110. ))
  111. return {
  112. ‘data’: traces,
  113. ‘layout’: go.Layout(
  114. title=‘Waveform1’,
  115. xaxis={‘title’: ‘Index’},
  116. legend={‘x’: 0, ‘y’: 1},
  117. hovermode=‘closest’
  118. )
  119. }
  120.  
  121. @app.callback(Output(‘fig2’, ‘figure’), [Input(‘signal’, ‘children’)], [],
  122. [Event(‘interval-component’, ‘interval’)])
  123. def update_figure2(data):
  124. data = json.loads(data)
  125. traces = []
  126. traces.append(go.Scatter(
  127. x=list(range(len(data[0]))),
  128. y=data[0],
  129. mode=‘lines’,
  130. opacity=0.7,
  131. ))
  132. return {
  133. ‘data’: traces,
  134. ‘layout’: go.Layout(
  135. title=‘Waveform2’,
  136. legend={‘x’: 0, ‘y’: 1},
  137. hovermode=‘closest’
  138. )
  139. }
  140.  
  141. @app.callback(Output(‘fig3’, ‘figure’), [Input(‘signal’, ‘children’)], [],
  142. [Event(‘interval-component’, ‘interval’)])
  143. def update_figure5(data):
  144. data = json.loads(data)
  145. traces = []
  146. traces.append(go.Scatter(
  147. x=list(range(len(data[0]))),
  148. y= np.array(data[0]) * np.array(data[0]),
  149. mode=‘line’,
  150. name=“Power”,
  151. ))
  152. return {
  153. ‘data’: traces,
  154. ‘layout’: go.Layout(
  155. title=‘Waveform3’,
  156. legend={‘x’: 0, ‘y’: 1},
  157. hovermode=‘closest’
  158. )
  159. }
  160.  
  161. @app.callback(Output(‘fig4’, ‘src’), [Input(‘signal’, ‘children’)], [], [Event(‘interval-component’, ‘interval’)])
  162. def update_figure6(data):
  163. data = json.loads(data)
  164. image = data[1]
  165. return ‘data:image/png;base64,{}’.format(image.encode(‘utf-8’).decode())
  166.  
  167. if name == ‘main’:
  168. app.run_server(host=‘0.0.0.0’, port=9000, debug=True)
  169. # app.run_server()
Add Comment
Please, Sign In to add comment