li-nguyen's picture
Copy over third batch version
42ee455
raw
history blame
1.44 kB
import pandas as pd
import plotly.graph_objects as go
import vizro.models as vm
import vizro.plotly.express as px
from plotly.subplots import make_subplots
from vizro import Vizro
from vizro.models.types import capture
gapminder = px.data.gapminder()
@capture("graph")
def column_and_line(data_frame: pd.DataFrame, x: str, y_column: str, y_line: str) -> go.Figure:
"""Creates a combined column and line chart using Plotly."""
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Bar(x=data_frame[x], y=data_frame[y_column], name=y_column),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=data_frame[x], y=data_frame[y_line], name=y_line),
secondary_y=True,
)
fig.update_layout(
xaxis={"type": "category", "title": x},
yaxis={"tickmode": "sync", "title": y_column},
yaxis2={"tickmode": "sync", "overlaying": "y", "title": y_line},
)
return fig
dashboard = vm.Dashboard(
pages=[
vm.Page(
title="Column and line",
components=[
vm.Graph(
figure=column_and_line(
gapminder.query("country == 'Vietnam'"),
y_column="gdpPercap",
y_line="lifeExp",
x="year",
)
)
],
)
]
)
Vizro().build(dashboard).run()