Spaces:
Running
Running
"""Contains reusable page functions to create identical content with a different `id`. | |
Note: Since each page can only belong to one navigation group, we need a new page with a unique ID for | |
each chart type used in different groups. | |
""" | |
import vizro.models as vm | |
from pages._pages_utils import PAGE_GRID, make_code_clipboard_from_py_file | |
from pages.examples import butterfly, column_and_line, connected_scatter, waterfall | |
def butterfly_factory(group: str): | |
"""Reusable function to create the page content for the butterfly chart with a unique ID.""" | |
return vm.Page( | |
id=f"{group}-butterfly", | |
path=f"{group}/butterfly", | |
title="Butterfly", | |
layout=vm.Layout(grid=PAGE_GRID), | |
components=[ | |
vm.Card( | |
text=""" | |
#### What is a butterfly chart? | |
A butterfly chart (also called a tornado chart) is a bar chart for displaying two sets of data series | |
side by side. | |
| |
#### When should I use it? | |
Use a butterfly chart when you wish to emphasize the comparison between two data sets sharing the same | |
parameters. Sharing this chart with your audience will help them see at a glance how two groups differ | |
within the same parameters. You can also **stack** two bars on each side to divide your | |
categories. | |
""" | |
), | |
vm.Graph(figure=butterfly.fig), | |
vm.Tabs( | |
tabs=[ | |
vm.Container( | |
title="Vizro dashboard", | |
components=[make_code_clipboard_from_py_file("butterfly.py", mode="vizro")], | |
), | |
vm.Container( | |
title="Plotly figure", | |
components=[make_code_clipboard_from_py_file("butterfly.py", mode="plotly")], | |
), | |
] | |
), | |
], | |
) | |
def connected_scatter_factory(group: str): | |
"""Reusable function to create the page content for the column chart with a unique ID.""" | |
return vm.Page( | |
id=f"{group}-connected-scatter", | |
path=f"{group}/connected-scatter", | |
title="Connected scatter", | |
layout=vm.Layout(grid=PAGE_GRID), | |
components=[ | |
vm.Card( | |
text=""" | |
#### What is a connected scatter chart? | |
A connected scatter chart visualizes two variables (x and y) using dots, with lines connecting the dots | |
in the order of the data points. One variable is plotted along the x-axis and the other along the | |
y-axis, showing both the relationship and a sequence of the data. | |
| |
#### When should I use it? | |
Use connected scatter charts to show the relationship between two variables and the sequence of data | |
points. They are ideal for paired numerical data, helping to reveal trends and patterns over time or in | |
a specific order. Remember, correlation is not causation, so ensure your audience understands this to | |
avoid misinterpretation. | |
""" | |
), | |
vm.Graph(figure=connected_scatter.fig), | |
vm.Tabs( | |
tabs=[ | |
vm.Container( | |
title="Vizro dashboard", | |
components=[make_code_clipboard_from_py_file("connected_scatter.py", mode="vizro")], | |
), | |
vm.Container( | |
title="Plotly figure", | |
components=[make_code_clipboard_from_py_file("connected_scatter.py", mode="plotly")], | |
), | |
] | |
), | |
], | |
) | |
def column_and_line_factory(group: str): | |
"""Reusable function to create the page content for the column+line chart with a unique ID.""" | |
return vm.Page( | |
id=f"{group}-column-and-line", | |
path=f"{group}/column-and-line", | |
title="Column and line", | |
layout=vm.Layout(grid=PAGE_GRID), | |
components=[ | |
vm.Card( | |
text=""" | |
#### What is a column and line chart? | |
A combined column and line chart helps you demonstrate the relationship between an amount | |
(displayed in columns) and a trend or rate (displayed as a line running across the columns). | |
| |
#### When should I use it? | |
Use this type of chart when you wish to compare quantities of one item with changes in another item. | |
It's ideal for showing patterns over time (e.g., monthly sales and growth rates) but can also be used | |
for other types of data comparisons. | |
""" | |
), | |
vm.Graph(figure=column_and_line.fig), | |
vm.Tabs( | |
tabs=[ | |
vm.Container( | |
title="Vizro dashboard", | |
components=[make_code_clipboard_from_py_file("column_and_line.py", mode="vizro")], | |
), | |
vm.Container( | |
title="Plotly figure", | |
components=[make_code_clipboard_from_py_file("column_and_line.py", mode="plotly")], | |
), | |
] | |
), | |
], | |
) | |
def waterfall_factory(group: str): | |
"""Reusable function to create the page content for the column chart with a unique ID.""" | |
return vm.Page( | |
id=f"{group}-waterfall", | |
path=f"{group}/waterfall", | |
title="Waterfall", | |
layout=vm.Layout(grid=PAGE_GRID), | |
components=[ | |
vm.Card( | |
text=""" | |
#### What is a waterfall chart? | |
A waterfall chart is a bar chart that shows the cumulative effect of sequential positive or negative | |
values. It starts with an initial value, displays individual changes as steps, and ends with the | |
final total. | |
| |
#### When should I use it? | |
Use a waterfall chart to visualize how individual factors contribute to a total, such as changes in | |
revenue or costs by category. It helps you understand the incremental impact of each factor, making | |
data analysis and interpretation easier. Ensure all bars and changes are clearly labeled, use consistent | |
colors for positive and negative values, and arrange categories logically to tell a coherent story. | |
""" | |
), | |
vm.Graph(figure=waterfall.fig), | |
vm.Tabs( | |
tabs=[ | |
vm.Container( | |
title="Vizro dashboard", | |
components=[make_code_clipboard_from_py_file("waterfall.py", mode="vizro")], | |
), | |
vm.Container( | |
title="Plotly figure", | |
components=[make_code_clipboard_from_py_file("waterfall.py", mode="plotly")], | |
), | |
] | |
), | |
], | |
) | |