使用 stat = 'identity' 为 gg barplot 添加计数标签
Adding count label for gg barplot with stat = 'identity'
我有一个带有 x 和 y 值并使用 stat = 'identity
的 GGbarplot geom_bar()
。
我希望能够在图表中打印 y 轴值。我想这应该很简单,但我不明白为什么它不起作用。
绘图是使用这条简单的线构建的(请参阅下面的数据集子集):
library(tidyverse)
df %>% ggplot(mapping = aes(x = timeunit, y = pa, group = main_grp ))+
geom_bar(aes(fill = main_grp),stat = 'identity')
我正在尝试使用以下方式添加标签:
geom_text(aes(label= pa), y=0, stat='identity', colour="white", size=4, vjust = -2)
这行不通,因为它只会打印数据集中的所有 0 和 1。
我试过使用
geom_text(aes(label= group_by(timeunit) %>% summarise (sum = sum(pa), y=0, stat='identity', colour="white", size=4, vjust = -2)
能够在每个时间单位打印一个标签,但这也不会给我任何想要的结果。
./
我还尝试用每个时间单位的所有 1 的总和制作一个简单的向量,最后得到一个长度为 6(时间单位总数)的向量,但我不能用它来标记,因为它的长度与数据集不同.
我的问题:
如何在条形图中打印 y 轴的值?最好在填充内打印标签以显示每个子集有多少计数。
子样本数据集的输入:
structure(list(Soort.wetenschappelijk = c("Pastinaca sativa subsp. sativa",
"Leymus arenarius", "Limonium humile", "Carex acuta", "Silene flos-cuculi",
"Smyrnium olusatrum", "Stellaria graminea", "Vicia sativa ssp. sativa",
"Brassica rapa", "Viola curtisii", "Pyrola minor", "Cerastium semidecandrum",
"Genista tinctoria", "Anthemis cotula", "Juncus gerardii", "Coronopus squamatus",
"Lonicera periclymenum", "Mentha arvensis", "Aphanes australis",
"Onopordum acanthium", "Polypodium vulgare", "Hyacinthoides non-scripta",
"Juncus acutiflorus", "Persicaria hydropiper", "Dactylorhiza majalis subsp. praetermissa",
"Cerastium diffusum", "Stellaria pallida", "Potamogeton lucens",
"Scleranthus annuus subsp. polycarpos", "Geum urbanum", "Ceratocapnos claviculata",
"Dryopteris cristata", "Potamogeton gramineus", "Silene dioica",
"Dactylorhiza majalis subsp. praetermissa", "Rumex crispus",
"Gentiana pneumonanthe", "Mespilus germanica", "Huperzia selago",
"Veronica chamaedrys", "Veronica persica", "Stachys sylvatica",
"Drosera intermedia", "Puccinellia distans subsp. distans", "Vicia lathyroides",
"Berula erecta", "Hyacinthoides non-scripta", "Carex acuta",
"Erica scoparia", "Echinochloa crus-galli"), Oeco.groep = c("5a",
"3a", "3c", "4c", "5b", "8b", "5a", "5a", "1e", "6b", "9e", "6b",
"7e", "1e", "3c", "1d", "9e", "2a", "1c", "1f", "9e", "9c", "5b",
"2b", "5b", "3a", "8b", "4a", "1c", "8b", "9e", "7a", "4b", "8b",
"5b", "2a", "7d", "8d", "7e", "5a", "1a", "9b", "7d", "3b", "6b",
"4c", "9c", "4c", "7e", "1c"), time_unit = c("X1940.x", "X1900.x",
"X1975.x", "X1900.x", "X1993.x", "X1993.x", "X1993.x", "X1940.x",
"X2001.x", "X1920.x", "X1993.x", "X1975.x", "X1993.x", "X1920.x",
"X2001.x", "X1920.x", "X1900.x", "X1993.x", "X1993.x", "X1993.x",
"X1993.x", "X2001.x", "X2001.x", "X2001.x", "X2001.x", "X2001.x",
"X1975.x", "X1940.x", "X1993.x", "X1993.x", "X1940.x", "X1993.x",
"X1975.x", "X1993.x", "X1940.x", "X1900.x", "X2001.x", "X1940.x",
"X1993.x", "X1900.x", "X2001.x", "X1940.x", "X1920.x", "X1940.x",
"X1920.x", "X1993.x", "X1900.x", "X1993.x", "X2001.x", "X1993.x"
), pa = c(1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0), timeunit = c("1940", "1900",
"1975", "1900", "1993", "1993", "1993", "1940", "2001", "1920",
"1993", "1975", "1993", "1920", "2001", "1920", "1900", "1993",
"1993", "1993", "1993", "2001", "2001", "2001", "2001", "2001",
"1975", "1940", "1993", "1993", "1940", "1993", "1975", "1993",
"1940", "1900", "2001", "1940", "1993", "1900", "2001", "1940",
"1920", "1940", "1920", "1993", "1900", "1993", "2001", "1993"
), main_grp = c("5", "3", "3", "4", "5", "8", "5", "5", "1",
"6", "9", "6", "7", "1", "3", "1", "9", "2", "1", "1", "9", "9",
"5", "2", "5", "3", "8", "4", "1", "8", "9", "7", "4", "8", "5",
"2", "7", "8", "7", "5", "1", "9", "7", "3", "6", "4", "9", "4",
"7", "1")), row.names = c(NA, -50L), class = c("tbl_df", "tbl",
"data.frame"))
也许尝试在不同的数据框中创建标签:
library(tidyverse)
#Labels
labs <- df %>% group_by(timeunit) %>%
summarise(N=sum(pa)) %>% mutate(main_grp=NA)
#Plot
df %>%
ggplot(mapping = aes(x = timeunit, y = pa, group = main_grp))+
geom_bar(aes(fill = main_grp),stat = 'identity')+
geom_text(data=labs,aes(label=N,y=N),vjust=-0.5)
输出:
我有一个带有 x 和 y 值并使用 stat = 'identity
的 GGbarplot geom_bar()
。
我希望能够在图表中打印 y 轴值。我想这应该很简单,但我不明白为什么它不起作用。
绘图是使用这条简单的线构建的(请参阅下面的数据集子集):
library(tidyverse)
df %>% ggplot(mapping = aes(x = timeunit, y = pa, group = main_grp ))+
geom_bar(aes(fill = main_grp),stat = 'identity')
我正在尝试使用以下方式添加标签:
geom_text(aes(label= pa), y=0, stat='identity', colour="white", size=4, vjust = -2)
这行不通,因为它只会打印数据集中的所有 0 和 1。
我试过使用
geom_text(aes(label= group_by(timeunit) %>% summarise (sum = sum(pa), y=0, stat='identity', colour="white", size=4, vjust = -2)
能够在每个时间单位打印一个标签,但这也不会给我任何想要的结果。 ./ 我还尝试用每个时间单位的所有 1 的总和制作一个简单的向量,最后得到一个长度为 6(时间单位总数)的向量,但我不能用它来标记,因为它的长度与数据集不同.
我的问题: 如何在条形图中打印 y 轴的值?最好在填充内打印标签以显示每个子集有多少计数。
子样本数据集的输入:
structure(list(Soort.wetenschappelijk = c("Pastinaca sativa subsp. sativa",
"Leymus arenarius", "Limonium humile", "Carex acuta", "Silene flos-cuculi",
"Smyrnium olusatrum", "Stellaria graminea", "Vicia sativa ssp. sativa",
"Brassica rapa", "Viola curtisii", "Pyrola minor", "Cerastium semidecandrum",
"Genista tinctoria", "Anthemis cotula", "Juncus gerardii", "Coronopus squamatus",
"Lonicera periclymenum", "Mentha arvensis", "Aphanes australis",
"Onopordum acanthium", "Polypodium vulgare", "Hyacinthoides non-scripta",
"Juncus acutiflorus", "Persicaria hydropiper", "Dactylorhiza majalis subsp. praetermissa",
"Cerastium diffusum", "Stellaria pallida", "Potamogeton lucens",
"Scleranthus annuus subsp. polycarpos", "Geum urbanum", "Ceratocapnos claviculata",
"Dryopteris cristata", "Potamogeton gramineus", "Silene dioica",
"Dactylorhiza majalis subsp. praetermissa", "Rumex crispus",
"Gentiana pneumonanthe", "Mespilus germanica", "Huperzia selago",
"Veronica chamaedrys", "Veronica persica", "Stachys sylvatica",
"Drosera intermedia", "Puccinellia distans subsp. distans", "Vicia lathyroides",
"Berula erecta", "Hyacinthoides non-scripta", "Carex acuta",
"Erica scoparia", "Echinochloa crus-galli"), Oeco.groep = c("5a",
"3a", "3c", "4c", "5b", "8b", "5a", "5a", "1e", "6b", "9e", "6b",
"7e", "1e", "3c", "1d", "9e", "2a", "1c", "1f", "9e", "9c", "5b",
"2b", "5b", "3a", "8b", "4a", "1c", "8b", "9e", "7a", "4b", "8b",
"5b", "2a", "7d", "8d", "7e", "5a", "1a", "9b", "7d", "3b", "6b",
"4c", "9c", "4c", "7e", "1c"), time_unit = c("X1940.x", "X1900.x",
"X1975.x", "X1900.x", "X1993.x", "X1993.x", "X1993.x", "X1940.x",
"X2001.x", "X1920.x", "X1993.x", "X1975.x", "X1993.x", "X1920.x",
"X2001.x", "X1920.x", "X1900.x", "X1993.x", "X1993.x", "X1993.x",
"X1993.x", "X2001.x", "X2001.x", "X2001.x", "X2001.x", "X2001.x",
"X1975.x", "X1940.x", "X1993.x", "X1993.x", "X1940.x", "X1993.x",
"X1975.x", "X1993.x", "X1940.x", "X1900.x", "X2001.x", "X1940.x",
"X1993.x", "X1900.x", "X2001.x", "X1940.x", "X1920.x", "X1940.x",
"X1920.x", "X1993.x", "X1900.x", "X1993.x", "X2001.x", "X1993.x"
), pa = c(1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0), timeunit = c("1940", "1900",
"1975", "1900", "1993", "1993", "1993", "1940", "2001", "1920",
"1993", "1975", "1993", "1920", "2001", "1920", "1900", "1993",
"1993", "1993", "1993", "2001", "2001", "2001", "2001", "2001",
"1975", "1940", "1993", "1993", "1940", "1993", "1975", "1993",
"1940", "1900", "2001", "1940", "1993", "1900", "2001", "1940",
"1920", "1940", "1920", "1993", "1900", "1993", "2001", "1993"
), main_grp = c("5", "3", "3", "4", "5", "8", "5", "5", "1",
"6", "9", "6", "7", "1", "3", "1", "9", "2", "1", "1", "9", "9",
"5", "2", "5", "3", "8", "4", "1", "8", "9", "7", "4", "8", "5",
"2", "7", "8", "7", "5", "1", "9", "7", "3", "6", "4", "9", "4",
"7", "1")), row.names = c(NA, -50L), class = c("tbl_df", "tbl",
"data.frame"))
也许尝试在不同的数据框中创建标签:
library(tidyverse)
#Labels
labs <- df %>% group_by(timeunit) %>%
summarise(N=sum(pa)) %>% mutate(main_grp=NA)
#Plot
df %>%
ggplot(mapping = aes(x = timeunit, y = pa, group = main_grp))+
geom_bar(aes(fill = main_grp),stat = 'identity')+
geom_text(data=labs,aes(label=N,y=N),vjust=-0.5)
输出: