geom_table adds a textual table directly to the ggplot using syntax
similar to that of
geom_table_npc is similar to
geom_label_npc in that
y coordinates are given in npc units.
geom_table(mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., parse = FALSE, na.rm = FALSE, show.legend = FALSE, inherit.aes = FALSE) geom_table_npc(mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., parse = FALSE, na.rm = FALSE, show.legend = FALSE, inherit.aes = FALSE)
A layer specific dataset - only needed if you want to override the plot defaults.
The statistical transformation to use on the data for this layer, as a string.
Position adjustment, either as a string, or the result of a call to a position adjustment function.
If TRUE, the labels will be parsed into expressions and displayed as described in ?plotmath.
logical. Should this layer be included in the legends?
Note the "width" and "height" like of a text element are 0, so stacking and dodging tables will not work by default, and axis limits are not automatically expanded to include all tables. Obviously, tables do have height and width, but they are physical units, not data units. The amount of space they occupy on that plot is not constant in data units: when you resize a plot, tables stay the same size, but the size of the axes changes.
This geom works only with tibbles as
data, as it expects a list
of data frames or a list of tibbles to be mapped to the
aesthetic. In the current version the following aesthetics affect the text
within the table
alpha. The argument
parse is simply passed forward to
y determine the
position of the whole table, similarly to that of a text label,
justification is interpreted as indicating the position of the table with
respect to the $x$ and $y$ coordinates in the data, and
used to rotate the table as a whole. Other aesthetics, including
fill are not yet implemented, neither are themes for table
annotate() cannot be used with
geom_table directly also for adding annotations.
You can modify table alignment with the
hjust aesthetics. These can either be a number between 0
(right/bottom) and 1 (top/left) or a character ("left", "middle", "right",
"bottom", "center", "top").
This geometry is inspired on answers to two questions in Stackoverflow. In contrast to these earlier examples, the current geom obeys the grammar of graphics, and attempts to be consistent with the behaviour of 'ggplot2' geometries. https://stackoverflow.com/questions/12318120/adding-table-within-the-plotting-region-of-a-ggplot-in-r https://stackoverflow.com/questions/25554548/adding-sub-tables-on-each-panel-of-a-facet-ggplot-in-r?
tableGrob as it is used to
construct the table.
library(dplyr)#> #>#>#> #>#>#> #>#>#> #>library(tibble) mtcars %>% group_by(cyl) %>% summarize(wt = mean(wt), mpg = mean(mpg)) %>% ungroup() %>% mutate(wt = sprintf("%.2f", wt), mpg = sprintf("%.1f", mpg)) -> tb df <- tibble(x = 0.95, y = 0.95, tb = list(tb)) ggplot(mtcars, aes(wt, mpg, colour = factor(cyl))) + geom_point() + geom_table_npc(data = df, aes(npcx = x, npcy = y, label = tb), hjust = 1, vjust = 1)