|
"""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")], |
|
), |
|
] |
|
), |
|
], |
|
) |
|
|