Small Data SF
Posit, PBC
Posit, PBC
2024-09-23
Icon, title, and author along with links to sub-pages if more than one page is defined.
Rows and columns using markdown headings, with optional attributes to control height, width, etc. Sidebars, mostly used for for interactive inputs. Tabsets to further divide content.
Cards are containers for code cell outputs (e.g., plots, tables, value boxes) and free form markdown text. The content of cards typically maps to cells in your notebook or source document.
dashboard.qmd
---
title: "Pages"
format: dashboard
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Pages"
format: dashboard
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Pages"
format: dashboard
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Navigation buttons"
format:
dashboard:
logo: images/beetle.png
nav-buttons:
- icon: github
href: https://github.com/quarto-dev/quarto-cli
aria-label: GitHub
- icon: linkedin
href: https://www.linkedin.com/company/posit-software/
aria-label: LinkedIn
- icon: youtube
href: https://youtube.com/
aria-label: YouTube
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Navigation buttons"
format:
dashboard:
logo: images/beetle.png
nav-buttons:
- icon: github
href: https://github.com/quarto-dev/quarto-cli
aria-label: GitHub
- icon: linkedin
href: https://www.linkedin.com/company/posit-software/
aria-label: LinkedIn
- icon: youtube
href: https://youtube.com/
aria-label: YouTube
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
Special aliases are recognized for certain navigation buttons: linkedin
, facebook
, reddit
, twitter
, and github
.
dashboard.qmd
---
title: "Navigation buttons - alternative"
format:
dashboard:
logo: images/beetle.png
nav-buttons: [linkedin]
linkedin: https://www.linkedin.com/company/posit-software
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
For information about the dashboard, data, etc. and/or for user inputs in interactive dashboards
Can be at the global or page level
dashboard.qmd
---
title: "Sidebars"
format:
dashboard:
logo: images/beetle.png
nav-buttons:
- icon: github
href: https://github.com/quarto-dev/quarto-cli
aria-label: GitHub
- icon: linkedin
href: https://www.linkedin.com/company/posit-software/
aria-label: LinkedIn
- icon: youtube
href: https://youtube.com/
aria-label: YouTube
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# {.sidebar}
Information and/or interactivity tools that you want on every page go here.
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Sidebars"
format:
dashboard:
logo: images/beetle.png
nav-buttons:
- icon: github
href: https://github.com/quarto-dev/quarto-cli
aria-label: GitHub
- icon: linkedin
href: https://www.linkedin.com/company/posit-software/
aria-label: LinkedIn
- icon: youtube
href: https://youtube.com/
aria-label: YouTube
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# {.sidebar}
Information and/or interactivity tools that you want on every page go here.
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Sidebars"
format:
dashboard:
logo: images/beetle.png
nav-buttons:
- icon: github
href: https://github.com/quarto-dev/quarto-cli
aria-label: GitHub
- icon: linkedin
href: https://www.linkedin.com/company/posit-software/
aria-label: LinkedIn
- icon: youtube
href: https://youtube.com/
aria-label: YouTube
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
# {.sidebar}
Information and/or interactivity tools that you want on every page go here.
# Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
# Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Rows, then columns"
format:
dashboard:
logo: images/beetle.png
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Overview {height="30%"}
### {width="20%"}
This dashboard summarizes an illuminating analysis of fuel economy of cars.
### {width="80%"}
This is a car.
![](images/car.png){fig-alt="Illustration of a teal color car." width="300"}
## Plots {height="70%"}
### Scatter {width="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
### Bar {width="25%"}
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Rows, then columns"
format:
dashboard:
logo: images/beetle.png
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Overview {height="30%"}
### {width="20%"}
This dashboard summarizes an illuminating analysis of fuel economy of cars.
### {width="80%"}
This is a car.
![](images/car.png){fig-alt="Illustration of a teal color car." width="300"}
## Plots {height="70%"}
### Scatter {width="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
### Bar {width="25%"}
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Tabsets"
format:
dashboard:
logo: images/beetle.png
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Overview {.tabset}
### Objective
This dashboard summarizes an illuminating analysis of fuel economy of cars.
### Car
This is a car.
![](images/car.png){fig-alt="Illustration of a teal color car." width="299"}
## Plots {.tabset}
### Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
### Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
Each card within a row/column or each row/column within another becomes a tab:
dashboard.qmd
---
title: "Tabsets"
format:
dashboard:
logo: images/beetle.png
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Overview {.tabset}
### Objective
This dashboard summarizes an illuminating analysis of fuel economy of cars.
### Car
This is a car.
![](images/car.png){fig-alt="Illustration of a teal color car." width="299"}
## Plots {.tabset}
### Scatter
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
### Bar
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
Value boxes are a great way to prominently display simple values within a dashboard
You can create value boxes in executable cells or plain markdown in divs
Value boxes use Bootstrap icons (https://icons.getbootstrap.com) and can be set to any color (e.g., with a HEX code) or color alias defined by the theme (we’ll get to themes later!)
Color alias | Default theme color(s) |
---|---|
primary |
Blue |
secondary |
Gray |
success |
Green |
info |
Bright Blue |
warning |
Yellow/Orange |
danger |
Red |
light |
Light Gray |
dark |
Black |
dashboard.qmd
---
title: "Valueboxes"
format: dashboard
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Value boxes {height="25%"}
```{python}
#| label: calculate-values
lowest_mileage_index = mpg['cty'].idxmin()
lowest_mileage_car = mpg.iloc[lowest_mileage_index]
lowest_mileage_cty = mpg.loc[lowest_mileage_index, 'cty']
highest_mileage_index = mpg['cty'].idxmax()
highest_mileage_car = mpg.iloc[highest_mileage_index]
highest_mileage_cty = mpg.loc[highest_mileage_index, 'cty']
mean_city_mileage = mpg['cty'].mean()
rounded_mean_city_mileage = round(mean_city_mileage, 2)
```
```{python}
#| content: valuebox
#| title: "Least efficient"
#| icon: fuel-pump-fill
#| color: danger
dict(
value = str(f"{lowest_mileage_cty} mpg")
)
```
```{python}
#| content: valuebox
#| title: "Most efficient"
dict(
icon = "fuel-pump",
color = "success",
value = str(f"{highest_mileage_cty} mpg")
)
```
::: {.valuebox icon="fuel-pump" color="secondary"}
Average city mileage
`{python} str(rounded_mean_city_mileage)` mpg
:::
## Plots {height="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Valueboxes"
format: dashboard
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Value boxes {height="25%"}
```{python}
#| label: calculate-values
lowest_mileage_index = mpg['cty'].idxmin()
lowest_mileage_car = mpg.iloc[lowest_mileage_index]
lowest_mileage_cty = mpg.loc[lowest_mileage_index, 'cty']
highest_mileage_index = mpg['cty'].idxmax()
highest_mileage_car = mpg.iloc[highest_mileage_index]
highest_mileage_cty = mpg.loc[highest_mileage_index, 'cty']
mean_city_mileage = mpg['cty'].mean()
rounded_mean_city_mileage = round(mean_city_mileage, 2)
```
```{python}
#| content: valuebox
#| title: "Least efficient"
#| icon: fuel-pump-fill
#| color: danger
dict(
value = str(f"{lowest_mileage_cty} mpg")
)
```
```{python}
#| content: valuebox
#| title: "Most efficient"
dict(
icon = "fuel-pump",
color = "success",
value = str(f"{highest_mileage_cty} mpg")
)
```
::: {.valuebox icon="fuel-pump" color="secondary"}
Average city mileage
`{python} str(rounded_mean_city_mileage)` mpg
:::
## Plots {height="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
You can include markdown text anywhere within a dashboard
Markdown text is automatically placed in cards, but you can also explicitly put them in cards with fenced divs, and add titles to cards
You can place markdown text and other cell output in a single card as well
Work on olympicdash-2.qmd.
Your goal is to create a dashboard that looks like the following:
05:00
award-fill
icon.Use the code commented with TODO for Step 2
to help you create the value boxes.
10:00
data_color()
.Un-comment the code under TODO for Step 3
and move it to the appropriate location. Use olympics_sorted_descending_top30
and olympics_sorted_ascending_bottom30
to create the tables.
10:00
plotnine
plotly
Quarto dashboards can be styled with one of the 25 themes from the Bootswatch project:
dashboard.qmd
---
title: "Bootswatch themes"
format:
dashboard:
theme: quartz
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Value boxes {height="25%"}
```{python}
#| label: calculate-values
lowest_mileage_index = mpg['cty'].idxmin()
lowest_mileage_car = mpg.iloc[lowest_mileage_index]
lowest_mileage_cty = mpg.loc[lowest_mileage_index, 'cty']
highest_mileage_index = mpg['cty'].idxmax()
highest_mileage_car = mpg.iloc[highest_mileage_index]
highest_mileage_cty = mpg.loc[highest_mileage_index, 'cty']
mean_city_mileage = mpg['cty'].mean()
rounded_mean_city_mileage = round(mean_city_mileage, 2)
```
```{python}
#| content: valuebox
#| title: "Least efficient"
#| icon: fuel-pump-fill
#| color: danger
dict(
value = str(f"{lowest_mileage_cty} mpg")
)
```
```{python}
#| content: valuebox
#| title: "Most efficient"
dict(
icon = "fuel-pump",
color = "success",
value = str(f"{highest_mileage_cty} mpg")
)
```
::: {.valuebox icon="fuel-pump" color="secondary"}
Average city mileage
`{r} rounded_mean_city_mileage` mpg
:::
## Plots {height="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
dashboard.qmd
---
title: "Bootswatch themes"
format:
dashboard:
theme: quartz
---
```{python}
from plotnine import ggplot, aes, geom_point, geom_bar
from plotnine.data import mpg
```
## Value boxes {height="25%"}
```{python}
#| label: calculate-values
lowest_mileage_index = mpg['cty'].idxmin()
lowest_mileage_car = mpg.iloc[lowest_mileage_index]
lowest_mileage_cty = mpg.loc[lowest_mileage_index, 'cty']
highest_mileage_index = mpg['cty'].idxmax()
highest_mileage_car = mpg.iloc[highest_mileage_index]
highest_mileage_cty = mpg.loc[highest_mileage_index, 'cty']
mean_city_mileage = mpg['cty'].mean()
rounded_mean_city_mileage = round(mean_city_mileage, 2)
```
```{python}
#| content: valuebox
#| title: "Least efficient"
#| icon: fuel-pump-fill
#| color: danger
dict(
value = str(f"{lowest_mileage_cty} mpg")
)
```
```{python}
#| content: valuebox
#| title: "Most efficient"
dict(
icon = "fuel-pump",
color = "success",
value = str(f"{highest_mileage_cty} mpg")
)
```
::: {.valuebox icon="fuel-pump" color="secondary"}
Average city mileage
`{r} rounded_mean_city_mileage` mpg
:::
## Plots {height="75%"}
```{python}
#| title: Highway vs. city mileage
(
ggplot(mpg, aes(x = "cty", y = "hwy"))
+ geom_point()
)
```
```{python}
#| title: Drive types
(
ggplot(mpg, aes(x = "drv"))
+ geom_bar()
)
```
Your goal is to create a dashboard that looks like the following:
02:00
A lot more to learn on theming all things Quarto!