123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- from nicegui import ui
- from . import doc
- @doc.demo(ui.plotly)
- def main_demo() -> None:
- import plotly.graph_objects as go
- fig = go.Figure(go.Scatter(x=[1, 2, 3, 4], y=[1, 2, 3, 2.5]))
- fig.update_layout(margin=dict(l=0, r=0, t=0, b=0))
- ui.plotly(fig).classes('w-full h-40')
- @doc.demo('Dictionary interface', '''
- This demo shows how to use the declarative dictionary interface to create a plot.
- For plots with many traces and data points, this is more efficient than the object-oriented interface.
- The definition corresponds to the [JavaScript Plotly API](https://plotly.com/javascript/).
- Due to different defaults, the resulting plot may look slightly different from the same plot created with the object-oriented interface,
- but the functionality is the same.
- ''')
- def plot_dict_interface():
- fig = {
- 'data': [
- {
- 'type': 'scatter',
- 'name': 'Trace 1',
- 'x': [1, 2, 3, 4],
- 'y': [1, 2, 3, 2.5],
- },
- {
- 'type': 'scatter',
- 'name': 'Trace 2',
- 'x': [1, 2, 3, 4],
- 'y': [1.4, 1.8, 3.8, 3.2],
- 'line': {'dash': 'dot', 'width': 3},
- },
- ],
- 'layout': {
- 'margin': {'l': 15, 'r': 0, 't': 0, 'b': 15},
- 'plot_bgcolor': '#E5ECF6',
- 'xaxis': {'gridcolor': 'white'},
- 'yaxis': {'gridcolor': 'white'},
- },
- }
- ui.plotly(fig).classes('w-full h-40')
- @doc.demo('Plot updates', '''
- This demo shows how to update the plot in real time.
- Click the button to add a new trace to the plot.
- To send the new plot to the browser, make sure to explicitly call `plot.update()` or `ui.update(plot)`.
- ''')
- def plot_updates():
- from random import random
- import plotly.graph_objects as go
- fig = go.Figure()
- fig.update_layout(margin=dict(l=0, r=0, t=0, b=0))
- plot = ui.plotly(fig).classes('w-full h-40')
- def add_trace():
- fig.add_trace(go.Scatter(x=[1, 2, 3], y=[random(), random(), random()]))
- plot.update()
- ui.button('Add trace', on_click=add_trace)
- @doc.demo('Plot events', '''
- This demo shows how to handle Plotly events.
- Try clicking on a data point to see the event data.
- Currently, the following events are supported:
- "plotly\_click",
- "plotly\_legendclick",
- "plotly\_selecting",
- "plotly\_selected",
- "plotly\_hover",
- "plotly\_unhover",
- "plotly\_legenddoubleclick",
- "plotly\_restyle",
- "plotly\_relayout",
- "plotly\_webglcontextlost",
- "plotly\_afterplot",
- "plotly\_autosize",
- "plotly\_deselect",
- "plotly\_doubleclick",
- "plotly\_redraw",
- "plotly\_animated".
- For more information, see the [Plotly documentation](https://plotly.com/javascript/plotlyjs-events/).
- ''')
- def plot_events():
- import plotly.graph_objects as go
- fig = go.Figure(go.Scatter(x=[1, 2, 3, 4], y=[1, 2, 3, 2.5]))
- fig.update_layout(margin=dict(l=0, r=0, t=0, b=0))
- plot = ui.plotly(fig).classes('w-full h-40')
- plot.on('plotly_click', ui.notify)
- doc.reference(ui.plotly)
|