使用 position = fill 将百分比添加到 barplot
add percentage to barplot with position = fill
我创建了堆叠条形图,条形图内有相应的标签。但是,我想更改情节,例如 position = fill
。这对我的情节有些奇怪。有什么解决办法吗?
cat <- c (0,0,0,0,0,1,1,1,1,1)
value <- c(100,200,300,100,300,200,200,200,300,300)
N <- c(15,43,7,53,25,33,5,3,2,2)
year <- c(2014,2017,2018,2016,2015,2014,2016,2018,2017,2015)
exdata <- cbind(cat, value, N, year)
exdata <- as.data.frame(exdata)
exdata2 <- group_by(exdata, year) %>% mutate (pct = paste0((round(value/sum(value)*100, 2))," %"))
exdata2 <- as.data.frame(exdata2)
plot.exdata2 <- ggplot(exdata2, aes(year, value, fill = factor(cat))) +
geom_bar(stat = "identity", position = "stack") + # position = stack
geom_text(aes(label = exdata2$pct), position = position_stack(vjust = 0.5), size = 3.2) +
theme_pubclean()
所需格式:
您可以尝试 geom_col
,因为建议在 stat = "identity"
时使用。此外,您还必须在 geom_text
中指定 "fill"
位置:
ggplot(exdata2, aes(year, value, fill = factor(cat))) +
geom_col(position = "fill") +
geom_text(aes(label = pct), position = position_fill(vjust = 0.5))
我创建了堆叠条形图,条形图内有相应的标签。但是,我想更改情节,例如 position = fill
。这对我的情节有些奇怪。有什么解决办法吗?
cat <- c (0,0,0,0,0,1,1,1,1,1)
value <- c(100,200,300,100,300,200,200,200,300,300)
N <- c(15,43,7,53,25,33,5,3,2,2)
year <- c(2014,2017,2018,2016,2015,2014,2016,2018,2017,2015)
exdata <- cbind(cat, value, N, year)
exdata <- as.data.frame(exdata)
exdata2 <- group_by(exdata, year) %>% mutate (pct = paste0((round(value/sum(value)*100, 2))," %"))
exdata2 <- as.data.frame(exdata2)
plot.exdata2 <- ggplot(exdata2, aes(year, value, fill = factor(cat))) +
geom_bar(stat = "identity", position = "stack") + # position = stack
geom_text(aes(label = exdata2$pct), position = position_stack(vjust = 0.5), size = 3.2) +
theme_pubclean()
所需格式:
您可以尝试 geom_col
,因为建议在 stat = "identity"
时使用。此外,您还必须在 geom_text
中指定 "fill"
位置:
ggplot(exdata2, aes(year, value, fill = factor(cat))) +
geom_col(position = "fill") +
geom_text(aes(label = pct), position = position_fill(vjust = 0.5))