12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """Component for displaying a plotly graph."""
- from typing import Dict, Union
- from plotly.graph_objects import Figure
- from plotly.io import to_json
- from pynecone.components.component import Component
- from pynecone.components.tags import Tag
- from pynecone.var import Var
- class PlotlyLib(Component):
- """A component that wraps a plotly lib."""
- library = "react-plotly.js"
- class Plotly(PlotlyLib):
- """Display a plotly graph."""
- tag = "Plot"
- # The figure to display. This can be a plotly figure or a plotly data json.
- data: Var[Figure]
- # The layout of the graph.
- layout: Var[Dict]
- # The width of the graph.
- width: Var[str]
- # The height of the graph.
- height: Var[str]
- def _get_imports(self):
- return {}
- def _get_custom_code(self) -> str:
- return """import dynamic from 'next/dynamic'
- const Plot = dynamic(() => import('react-plotly.js'), { ssr: false });
- """
- def _render(self) -> Tag:
- if isinstance(self.data, Figure):
- if self.layout is None:
- if self.width is not None:
- layout = Var.create({"width": self.width, "height": self.height})
- assert layout is not None
- self.layout = layout
- return super()._render()
|