Spaces:
Running
Running
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 | |
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") | |