antonymilne's picture
Add pycafe link and plotly code (#1)
b699ae9 verified
raw
history blame
1.11 kB
from typing import Union
import pandas as pd
import plotly.graph_objects as go
import vizro.plotly.express as px
from plotly.subplots import make_subplots
from vizro.models.types import capture
@capture("graph")
def column_and_line(
data_frame: pd.DataFrame,
x: Union[str, pd.Series, list[str], list[pd.Series]],
y_column: Union[str, pd.Series, list[str], list[pd.Series]],
y_line: Union[str, pd.Series, list[str], list[pd.Series]],
) -> go.Figure:
bar = px.bar(data_frame, x=x, y=y_column)
fig = make_subplots(figure=bar, specs=[[{"secondary_y": True}]])
line = px.line(
data_frame,
x=x,
y=y_line,
markers=True,
color_discrete_sequence=fig.layout.template.layout.colorway[len(bar.data) :],
)
for trace in line.data:
fig.add_trace(trace, secondary_y=True)
fig.update_layout(yaxis2={"tickmode": "sync", "overlaying": "y", "title": line.layout.yaxis.title})
return fig
gapminder = px.data.gapminder().query("country == 'Vietnam'")
fig = column_and_line(gapminder, y_column="gdpPercap", y_line="lifeExp", x="year")