|
|
|
|
|
|
|
|
|
import json |
|
from h2o_wave import main, app, Q, ui, data |
|
|
|
|
|
spec_linear_scale = json.dumps(dict( |
|
mark='bar', |
|
encoding=dict( |
|
x=dict(field='a', type='ordinal'), |
|
y=dict(field='b', type='quantitative') |
|
) |
|
)) |
|
|
|
|
|
spec_log_scale = json.dumps(dict( |
|
mark='bar', |
|
encoding=dict( |
|
x=dict(field='a', type='ordinal'), |
|
y=dict(field='b', type='quantitative', scale=dict(type='log')) |
|
) |
|
)) |
|
|
|
|
|
plot_data = data(fields=["a", "b"], rows=[ |
|
["A", 28], ["B", 55], ["C", 43], |
|
["D", 91], ["E", 81], ["F", 53], |
|
["G", 19], ["H", 87], ["I", 52] |
|
], pack=True) |
|
|
|
|
|
log_scale_command = ui.command( |
|
name='to_log_scale', |
|
label='Log Scale', |
|
icon='LineChart', |
|
) |
|
linear_scale_command = ui.command( |
|
name='to_linear_scale', |
|
label='Linear Scale', |
|
icon='LineChart', |
|
) |
|
|
|
|
|
@app('/demo') |
|
async def serve(q: Q): |
|
if q.client.plot_added: |
|
example = q.page['example'] |
|
if q.args.to_log_scale: |
|
|
|
example.text.content = 'Plot (Log Scale)' |
|
example.text.commands = [linear_scale_command] |
|
example.visualization.specification = spec_log_scale |
|
else: |
|
|
|
example.text.content = 'Plot (Linear Scale)' |
|
example.text.commands = [log_scale_command] |
|
example.visualization.specification = spec_linear_scale |
|
else: |
|
q.page['example'] = ui.form_card( |
|
box='1 1 2 8', |
|
items=[ |
|
ui.text_l(name='text', content='Plot (Linear Scale)', commands=[log_scale_command]), |
|
ui.vega_visualization(name='visualization', specification=spec_linear_scale, data=plot_data, height='300px'), |
|
], |
|
) |
|
|
|
q.client.plot_added = True |
|
|
|
await q.page.save() |
|
|