Abstrave quarto theme
Roy Francis
25-May-2025
---
title: "This is a title"
format:
revealjs
---
quarto::quarto_render()
in R:quarto render
in the terminal:Slides are separated by ##
. Incremental content on is separated by . . .
like below.
Hide or not count a slide:
## Slide Title {visibility="hidden"}
## Slide Title {visibility="uncounted"}
. . .
Any content inside class .notes
on a slide are notes. This is only visible in presenter mode (by pressing s).
. . .
The slide content can be organized into columns which can be nested if needed.
:::{.columns}
:::{.column width="50%"}
<div style="background-color:#fdebd0">Left content</div>
:::
:::{.column width="50%"}
<div style="background-color:#eaf2f8">Right content</div>
:::{.column width="60%"}
<div style="background-color:#d0ece7">Inner left</div>
:::
:::{.column width="40%"}
<div style="background-color:#f2d7d5">Inner right</div>
:::
:::
:::
Left content
Right content
Inner left
Inner right
::: {.v-top}
::: {}
- Top aligned
- content
:::
:::
::: {.v-center}
::: {}
- Center aligned
- content
:::
:::
::: {.v-bottom}
::: {}
- Bottom aligned
- content
:::
:::
Rendering of normal text, numbers and symbols.
ABCDEFGHIJKLMNOPQRSTUYWXYZÅÄÖ
abcdefghijklmnopqrstuvwxyzåäö
0123456789
!“#%&/()$@*^~<>-:;,_±|?+=
!"#%&/\()$@*^~<>-:;,_±|?+=
Headings can be defined as shown below.
## Level 2 heading
### Level 3 heading
#### Level 4 heading
##### Level 5 heading
###### Level 6 heading
Level 1 usage is not recommended. Use level 2 for slide titles. Use level 3 and below for other titles.
Text scaling classes
[Largest text]{.largest}
[Larger text]{.larger}
[Large text]{.large}
Normal text.
[Small text]{.small}
[Smaller text]{.smaller}
[Smallest text]{.smallest}
Largest text
Larger text
Large text
Normal text
Small text
Smaller text
Smallest text
Horizontal alignment of text can be adjusted as shown below.
[Left aligned text]{.left}
[Center aligned text]{.center}
[Right aligned text]{.right}
Left aligned text
Center aligned text
Right aligned text
::: {.blockquote}
This line is quoted
:::
This line is quoted
A horizontal line can be created using ---
This is **Bold text**
This is Bold text
This is *Italic text*
This is Italic text
~~Strikethrough~~ text
Strikethrough text
This is subscript H~2~O
H2O
This is superscript 2^10^
210
This is a [badge]{.badge .badge-primary}
This is a badge
This is a [badge]{.badge .badge-secondary}
This is a badge
This is a [link](r-project.org)
This is a link
Fit text to full width.
::: {.r-fit-text}
Attention
:::
Attention
In reports, .aside
pushes content into the margin while in revealjs, it is pushed to the bottom.
::: {.aside}
Content inside aside.
:::
Unordered List
- Bullet 1
- Bullet 2
- Sub-bullet 2.1
Incremental List
:::{.incremental}
1. Incremental Bullet 1
2. Incremental Bullet 2
3. Incremental Bullet 3
:::
For more options, see here.
::: {style="color: red"}
This paragraph is red.
:::
This paragraph is red.
[This text is blue]{style="color: blue"}
This text is blue
::: {.callout-note}
This is a callout.
:::
::: {.callout-warning}
This is a callout.
:::
::: {.callout-important}
This is a callout.
:::
::: {.callout-tip}
This is a callout.
:::
::: {.callout-caution}
This is a callout.
:::
Note
This is a callout.
Warning
This is a callout.
Important
This is a callout.
Tip
This is a callout.
Caution
This is a callout.
Variants of callout
::: {.callout-note icon=false}
Icon is disabled
:::
::: {.callout-note appearance="simple"}
Appearance is simple
:::
::: {.callout-note appearance="minimal"}
Appearance is minimal
:::
::: {.callout-note appearance="simple"}
## Custom title
Simple appearance and a custom title
:::
::: {.callout-note appearance="minimal"}
## Custom title
Minimal appearance and a custom title
:::
Note
Icon is disabled
Appearance is simple
Appearance is minimal
Custom title
Simple appearance and a custom title
Custom title
Minimal appearance and a custom title
::: {.callout-note}
This contains code
## Callout with code
```
Sys.Date()
```
:::
Callout with code
This contains code
Sys.Date()
Inline code
`this`
looks like this
.`r Sys.Date()`
producing 2025-05-25.== != && ++ |> <> <- <= <~ /= |=> ->>
Code chunks
Code can also be defined inside chunks.
```
This is code
```
This is code
R code is executed inside code blocks like this
which shows the code and output.
For more code highlighting documentation, see here.
Using Markdown
Using regular markdown.

The dimensions are based on image and/or fill up the entire width.
Control image dimensions.
{width=50%}
{width=20%}
For more image documentation, see here.
Figure layout
::: {layout-ncol=3}
{#fig-layout-1}
{#fig-layout-2}
{#fig-layout-3}
:::
Absolute positioning
{.absolute top=250 left=0 height="450"}
{.absolute top=200 right=50 height="250"}
{.absolute bottom=0 right=200 height="200"}
Using Raw HTML
This image is 30% size. <img src="assets/image.webp" style="width:30%;"/>
Using R
R chunks in RMarkdown can be used to control image display size using the argument out.width
.
This image is displayed at a size of 200 pixels.
Stack images and display incrementally
::: {.r-stack}
::: {.fragment}
{style="transform:rotate(-5deg);border:beige 40px solid;"}
:::
::: {.fragment}
{style="transform:rotate(5deg);border:beige 40px solid;"}
:::
:::
Stretch images to use up remaining space.
{.stretch}
Some examples of rendering equations.
$e^{i\pi} + 1 = 0$
$$\frac{E \times X^2 \prod I}{2+7} = 432$$
$$\sum_{i=1}^n X_i$$
$$\int_0^{2\pi} \sin x~dx$$
\(e^{i\pi} + 1 = 0\) \[\frac{E \times X^2 \prod I}{2+7} = 432\] \[\sum_{i=1}^n X_i\] \[\int_0^{2\pi} \sin x~dx\]
Some examples of rendering equations.
$\left( \sum_{i=1}^{n}{i} \right)^2 = \left( \frac{n(n-1)}{2}\right)^2 = \frac{n^2(n-1)^2}{4}$
$\begin{eqnarray} X & \sim & \mathrm{N}(0,1)\\ Y & \sim & \chi^2_{n-p}\\ R & \equiv & X/Y \sim t_{n-p} \end{eqnarray}$
$\begin{eqnarray} P(|X-\mu| > k) & = & P(|X-\mu|^2 > k^2)\\ & \leq & \frac{\mathbb{E}\left[|X-\mu|^2\right]}{k^2}\\ & \leq & \frac{\mathrm{Var}[X]}{k^2} \end{eqnarray}$
\(\left( \sum_{i=1}^{n}{i} \right)^2 = \left( \frac{n(n-1)}{2}\right)^2 = \frac{n^2(n-1)^2}{4}\)
\(\begin{eqnarray} X & \sim & \mathrm{N}(0,1)\\ Y & \sim & \chi^2_{n-p}\\ R & \equiv & X/Y \sim t_{n-p} \end{eqnarray}\)
\(\begin{eqnarray} P(|X-\mu| > k) & = & P(|X-\mu|^2 > k^2)\\ & \leq & \frac{\mathbb{E}\left[|X-\mu|^2\right]}{k^2}\\ & \leq & \frac{\mathrm{Var}[X]}{k^2} \end{eqnarray}\)
kable
The most simple table using kable
from R package knitr
.
Tables using the gt package. Grammar of tables with extensive customization options.
Sepal Length | Sepal Width | Petal Length | Petal Width |
---|---|---|---|
setosa | |||
5.1 | 3.5 | 1.4 | 0.2 |
4.9 | 3.0 | 1.4 | 0.2 |
versicolor | |||
7.0 | 3.2 | 4.7 | 1.4 |
6.4 | 3.2 | 4.5 | 1.5 |
virginica | |||
6.3 | 3.3 | 6.0 | 2.5 |
5.8 | 2.7 | 5.1 | 1.9 |
Source: Iris data. Anderson, 1936; Fisher, 1936) |
kableExtra
More advanced table using kableExtra
and formattable
.
iris[c(1:2,51:52,105:106),] %>%
mutate(Sepal.Length=color_bar("lightsteelblue")(Sepal.Length)) %>%
mutate(Sepal.Width=color_tile("white","orange")(Sepal.Width)) %>%
mutate(Species=cell_spec(Species,"html",color="white",bold=T,
background=c("#8dd3c7","#fb8072","#bebada")[factor(.$Species)])) %>%
kable("html",escape=F) %>%
kable_styling(bootstrap_options=c("striped","hover","responsive"),full_width=F) %>%
column_spec(5,width="3cm")
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species | |
---|---|---|---|---|---|
1 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
2 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
51 | 7.0 | 3.2 | 4.7 | 1.4 | versicolor |
52 | 6.4 | 3.2 | 4.5 | 1.5 | versicolor |
105 | 6.5 | 3.0 | 5.8 | 2.2 | virginica |
106 | 7.6 | 3.0 | 6.6 | 2.1 | virginica |
DT
Interactive table using R package DT
.
reactable
Interactive tables with reactable.
Plots using base R.
ggplot2
Plotting using ggplot2
.
highcharter
R package highcharter
is a wrapper around javascript library highcharts
.
library(highcharter)
h <- iris %>%
hchart("scatter",hcaes(x="Sepal.Length",y="Sepal.Width",group="Species")) %>%
hc_xAxis(title=list(text="Sepal Length"),crosshair=TRUE) %>%
hc_yAxis(title=list(text="Sepal Width"),crosshair=TRUE) %>%
hc_chart(zoomType="xy",inverted=FALSE) %>%
hc_legend(verticalAlign="top",align="right") %>% hc_size(height=300,width=500)
htmltools::tagList(list(h))
plotly
R package plotly
provides R binding around javascript plotting library plotly
.
ggplotly
plotly
also has a function called ggplotly
which converts a static ggplot2 object into an interactive plot.
ggiraph
R package ggiraph
converts a static ggplot2 object into an interactive plot.
library(ggiraph)
p <- ggplot(iris,aes(x=Sepal.Length,y=Petal.Length,colour=Species))+
geom_point_interactive(aes(tooltip=paste0("<b>Petal Length:</b> ",Petal.Length,"\n<b>Sepal Length: </b>",Sepal.Length,"\n<b>Species: </b>",Species)),size=2)+
theme_bw()
tooltip_css <- "background-color:#f8f9f9;padding:10px;border-style:solid;border-width:2px;border-color:#125687;border-radius:5px;"
girafe(code=print(p), height_svg=2, width_svg=4,
options=list(
opts_hover(css="cursor:pointer;stroke:black;fill-opacity:0.3"),
opts_zoom(max=5),
opts_tooltip(css=tooltip_css,opacity=0.9),
opts_sizing(width=0.6)
)
)
dygraphs
R package dygraphs
provides R bindings for javascript library dygraphs for time series data.
R package networkD3
allows the use of interactive network graphs from the D3.js javascript library.
leaflet
R package leaflet
provides R bindings for javascript mapping library; leafletjs.
crosstalk
R package crosstalk
allows crosstalk enabled plotting libraries to be linked. Through the shared ‘key’ variable, data points can be manipulated simultaneously on two independent plots.
library(crosstalk)
shared_quakes <- SharedData$new(quakes[sample(nrow(quakes), 100),])
lf <- leaflet(shared_quakes,height=300) %>%
addTiles(urlTemplate='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png') %>%
addMarkers()
py <- plot_ly(shared_quakes,x=~depth,y=~mag,size=~stations,height=300) %>%
add_markers()
div(div(lf,style="float:left;width:49%"),div(py,style="float:right;width:49%"))
ObservableJS in quarto documentation.
This slide has a colourful background
## Colourful {background-color="#ABEBC6"}
This slide has a background image
## Big Image {background-image="assets/image.webp"}
css: "styles.css"
.scrollable
sysname
"Linux"
release
"6.11.0-1014-azure"
version
"#14~24.04.1-Ubuntu SMP Thu Apr 24 17:41:03 UTC 2025"
nodename
"fv-az1921-371"
machine
"x86_64"
login
"unknown"
user
"runner"
effective_user
"runner"