---
title: "Export"
---
```{r}
#| include: false
library(tabviz)
library(dplyr)
# Create output directory for examples
if (!dir.exists("export-examples")) dir.create("export-examples")
```
Export your tabviz widgets to static files for publications, presentations, and sharing.
## Quick Example
Let's create a forest plot and export it to SVG.
```{r}
data(glp1_trials)
p <- glp1_trials |>
filter(row_type == "data", group == "Main Trials") |>
head(5) |>
tabviz(
label = "study",
columns = list(
col_text("drug", "Drug"),
viz_forest(point = "hr", lower = "lower", upper = "upper",
scale = "log", null_value = 1, width = 180),
col_interval("HR (95% CI)", point = "hr", lower = "lower", upper = "upper")
),
theme = web_theme_jama(),
title = "GLP-1 Agonist Cardiovascular Outcomes"
)
p
```
Now export to SVG:
```{r}
save_plot(p, "export-examples/forest_example.svg", width = 700)
```
Here's the exported SVG:
{width=700}
## Format Comparison
- **SVG**: Vector format, infinite scalability, best for journals and editing
- **PNG**: Raster format, good for presentations (use `scale = 2` or higher)
- **PDF**: Vector format, best for print publications
## SVG Export
SVG is the recommended format for most uses. No external dependencies required.
```{r}
# Bar chart example
bar_data <- data.frame(
department = c("Cardiology", "Oncology", "Neurology", "Pediatrics"),
enrollment = c(245, 312, 189, 156)
)
p_bar <- tabviz(bar_data, label = "department",
columns = list(
viz_bar(effect_bar("enrollment", color = "#3b82f6"),
header = "Enrollment", width = 180, axis_range = c(0, 350)),
col_numeric("enrollment", "N")
),
theme = web_theme_modern(),
title = "Trial Enrollment by Department"
)
save_plot(p_bar, "export-examples/bar_example.svg", width = 500)
```
{width=500}
## Themed Exports
### JAMA Theme
```{r}
p_jama <- glp1_trials |>
filter(row_type == "data", group == "Main Trials") |>
head(4) |>
tabviz(
label = "study",
columns = list(
viz_forest(point = "hr", lower = "lower", upper = "upper",
scale = "log", null_value = 1, width = 160),
col_interval("HR (95% CI)", point = "hr", lower = "lower", upper = "upper")
),
theme = web_theme_jama(),
title = "Figure 1. Primary Endpoint"
)
save_plot(p_jama, "export-examples/jama_theme.svg", width = 500)
```
{width=500}
### Dark Theme
```{r}
p_dark <- glp1_trials |>
filter(row_type == "data", group == "Main Trials") |>
head(4) |>
tabviz(
label = "study",
columns = list(
viz_forest(point = "hr", lower = "lower", upper = "upper",
scale = "log", null_value = 1, width = 160),
col_interval("HR (95% CI)", point = "hr", lower = "lower", upper = "upper")
),
theme = web_theme_dark(),
title = "Dark Theme Export"
)
save_plot(p_dark, "export-examples/dark_theme.svg", width = 500)
```
{width=500}
## PNG and PDF Export
PNG and PDF require Chrome/Chromium installed on your system.
```r
# PNG at 2x resolution
save_plot(p, "figure.png", width = 800, scale = 2)
# PDF for print
save_plot(p, "figure.pdf", width = 800)
```
### Resolution Guide
For PNG exports, use `scale` parameter:
- `scale = 1`: 72 DPI (quick preview)
- `scale = 2`: 144 DPI (web/screen)
- `scale = 3`: 216 DPI (presentations)
- `scale = 4`: 288 DPI (high-res print)
## See Also
- [Themes](themes.qmd) - Style for publication
- [Reference: save_plot()](../reference/export.qmd) - Complete API