Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup, message = FALSE---------------------------------------------------
library(scales)
library(signs)
library(dplyr)
library(ggplot2)
library(ggrepel)
## ----basics-------------------------------------------------------------------
theme_set(theme_gray())
theme_update(
panel.grid.minor = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank()
)
p <-
ggplot(sleep) +
aes(group, extra) +
geom_point() +
xlab("Drug") +
ylab("Extra Sleep (hours)")
label_hours <- function(mapping) {
geom_text_repel(
mapping,
nudge_x = -.1,
direction = "y",
segment.size = .4,
segment.color = "grey75",
hjust = "right"
)
}
p +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra, accuracy = .1),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
## ----percentages--------------------------------------------------------------
p +
ylab("Extra Sleep (% over 8 hours)") +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra / 8, accuracy = .1, format = scales::percent),
group == 2 ~ percent(extra / 8, accuracy = .1)
)
)
)
## ----commas-------------------------------------------------------------------
p +
ylab("Extra Sleep (hours / year)") +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra * 365, format = scales::comma),
group == 2 ~ comma(extra * 365)
)
)
)
## ----matching-by-position-----------------------------------------------------
x <- seq(-4, 4)
number(x, 1) # first argument is accuracy
signs(x, 1) # first argument is accuracy
## ----add-plusses--------------------------------------------------------------
p +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra, accuracy = .1, add_plusses = TRUE),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
## ----trim-leading-zeros-------------------------------------------------------
p +
ylim(-.8, .8) +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra, accuracy = .1, trim_leading_zeros = TRUE),
group == 2 ~ number(extra, accuracy = .1)
)
)
) +
theme(
axis.text.y = element_blank(),
axis.ticks.y = element_blank()
)
## ----axis-labels--------------------------------------------------------------
theme_update(
axis.text.y = element_text(hjust = 1)
)
p +
scale_y_continuous(
limits = c(-.8, .8),
breaks = seq(-.8, .8, by = .2),
labels = signs_format(
accuracy = .1,
add_plusses = TRUE,
trim_leading_zeros = TRUE
)
) +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(
extra,
accuracy = .1,
add_plusses = TRUE,
trim_leading_zeros = TRUE
),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
## ----plus-or-minus------------------------------------------------------------
p +
scale_y_continuous(
limits = c(-4, 6),
breaks = seq(-4, 6, by = 1),
labels = signs_format(
add_plusses = TRUE,
label_at_zero = "symbol"
)
) +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(
extra,
accuracy = .1,
add_plusses = TRUE
),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
## ----zero-blank---------------------------------------------------------------
p +
scale_y_continuous(
limits = c(-4, 6),
breaks = seq(-4, 6, by = 1),
labels = signs_format(
add_plusses = TRUE,
label_at_zero = "blank"
)
) +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(
extra,
accuracy = .1,
add_plusses = TRUE
),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
## ----setting-options-globally-------------------------------------------------
options(
signs.format = scales::number,
signs.add.plusses = TRUE,
signs.trim.leading.zeros = TRUE,
signs.label.at.zero = "none"
)
p +
scale_y_continuous(
limits = c(-.8, .8),
breaks = seq(-.8, .8, by = .2),
labels = signs_format(accuracy = .1, label_at_zero = "blank")
) +
label_hours(
aes(
label = case_when(
group == 1 ~ signs(extra, accuracy = .1),
group == 2 ~ number(extra, accuracy = .1)
)
)
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.