geom_richtext {ggtext} | R Documentation |
Richtext labels
Description
This geom draws text labels similar to ggplot2::geom_label()
, but formatted
using basic markdown/html. Parameter and aesthetic names follow the conventions
of ggplot2::geom_label()
, and therefore the appearance of the frame around
the label is controlled with label.colour
, label.padding
, label.margin
,
label.size
, label.r
, even though the same parameters are called box.colour
,
box.padding
, box.margin
, box.size
, and box.r
in geom_textbox()
. Most
styling parameters can be used as aesthetics and can be applied separately to
each text label drawn. The exception is styling parameters that are specified
as grid units (e.g., label.padding
or label.r
), which can only be specified
for all text labels at once. See examples for details.
Usage
geom_richtext(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
nudge_x = 0,
nudge_y = 0,
label.padding = unit(c(0.25, 0.25, 0.25, 0.25), "lines"),
label.margin = unit(c(0, 0, 0, 0), "lines"),
label.r = unit(0.15, "lines"),
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer, as a string. |
position |
Position adjustment, either as a string, or the result of
a call to a position adjustment function. Cannot be jointy specified with
|
... |
Other arguments passed on to |
nudge_x |
Horizontal and vertical adjustment to nudge labels by.
Useful for offsetting text from points, particularly on discrete scales.
Cannot be jointly specified with |
nudge_y |
Horizontal and vertical adjustment to nudge labels by.
Useful for offsetting text from points, particularly on discrete scales.
Cannot be jointly specified with |
label.padding |
Amount of padding around label. Defaults to 0.25 lines. |
label.margin |
Unit vector of length four specifying the margin outside the text label. |
label.r |
Radius of rounded corners. Defaults to 0.15 lines. |
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
Value
A ggplot2 layer that can be added to a plot created with
ggplot2::ggplot()
.
Aesthetics
geom_richtext()
understands the following aesthetics (required
aesthetics are in bold; select aesthetics are annotated):
-
x
-
y
-
label
-
alpha
-
angle
-
colour
Default color of label text and label outline. -
family
-
fontface
-
fill
Default fill color of label background. -
group
-
hjust
-
label.colour
Color of label outline. Overridescolour
. -
label.size
Width of label outline. -
lineheight
-
size
Default font size of label text. -
text.colour
Color of label text. Overridescolour
. -
vjust
See Also
geom_textbox()
, element_markdown()
Examples
library(ggplot2)
df <- data.frame(
label = c(
"Some text **in bold.**",
"Linebreaks<br>Linebreaks<br>Linebreaks",
"*x*<sup>2</sup> + 5*x* + *C*<sub>*i*</sub>",
"Some <span style='color:blue'>blue text **in bold.**</span><br>And *italics text.*<br>
And some <span style='font-size:18pt; color:black'>large</span> text."
),
x = c(.2, .1, .5, .9),
y = c(.8, .4, .1, .5),
hjust = c(0.5, 0, 0, 1),
vjust = c(0.5, 1, 0, 0.5),
angle = c(0, 0, 45, -45),
color = c("black", "blue", "black", "red"),
fill = c("cornsilk", "white", "lightblue1", "white")
)
ggplot(df) +
aes(
x, y, label = label, angle = angle, color = color, fill = fill,
hjust = hjust, vjust = vjust
) +
geom_richtext() +
geom_point(color = "black", size = 2) +
scale_color_identity() +
scale_fill_identity() +
xlim(0, 1) + ylim(0, 1)
# labels without frame or background are also possible
ggplot(df) +
aes(
x, y, label = label, angle = angle, color = color,
hjust = hjust, vjust = vjust
) +
geom_richtext(
fill = NA, label.color = NA, # remove background and outline
label.padding = grid::unit(rep(0, 4), "pt") # remove padding
) +
geom_point(color = "black", size = 2) +
scale_color_identity() +
xlim(0, 1) + ylim(0, 1)