在 ggplot2 中使用 facet_grid 调整数据标签位置
Adjusting data labels position with facet_grid in ggplot2
我在 R 中有这个例子:
套餐
install.packages("plyr")
library(plyr)
install.packages("ggplot2")
library(ggplot2)
install.packages("ggthemes")
library(ggthemes)
这是我的代码:
uf <- c("AC","AC","AC","AC","AC","AC","AC","AC","AM","AM","AM",
"AM","AM","AM","AM","AM")
da <- c("Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada")
tr <- c(97,99,90.5,78.6,3,1,9.5,21.4,97.2,99.1,96.8,98.7,2.8,0.9,3.2,1.3)
resposta <- c("resposta","resposta","resposta","resposta","não resposta","não resposta","não resposta","não resposta","resposta","resposta","resposta","resposta",
"não resposta","não resposta","não resposta","não resposta")
taxa <- data.frame(uf, da, tr,resposta)
######_Adjusting data labels position_###############
taxa <- ddply(taxa, .(da), transform, pos = cumsum(tr) - (0.5 * tr)) # Ajusta a posição
g1 <- ggplot()+ geom_bar(aes(y = tr, x = da, fill = resposta), data = taxa,
stat="identity") +
facet_wrap(~uf) +
geom_text(data=taxa, aes(x = da, y = pos, label = tr), size=4) +
theme(legend.position="bottom", legend.direction="horizontal",
legend.title = element_blank())
g1
制作这个数字:
Question for dependencia with facet for uf
我想生成此图,所有值都在条形图内。而y轴为100
如有任何帮助,我们将不胜感激。
我整理了你的代码并使用 ifelse
来确定标签的正确位置。
Library(ggplot2)
uf <- c("AC","AC","AC","AC","AC","AC","AC","AC","AM","AM","AM",
"AM","AM","AM","AM","AM")
da <- c("Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada")
tr <- c(97,99,90.5,78.6,3,1,9.5,21.4,97.2,99.1,96.8,98.7,2.8,0.9,3.2,1.3)
resposta <- c("resposta","resposta","resposta","resposta","não resposta","não resposta","não resposta","não resposta","resposta","resposta","resposta","resposta",
"não resposta","não resposta","não resposta","não resposta")
taxa <- data.frame(uf, da, tr,resposta)
######_Adjusting data labels position_###############
taxa$pos <- ifelse(taxa$tr > 50, taxa$tr / 2, 100 - taxa$tr / 2)
ggplot(taxa, aes(y = tr, x = da, fill = resposta, label = tr)) +
geom_bar(stat="identity") +
geom_text(aes(y = pos), size=4) +
facet_wrap(~uf) +
theme(legend.position="bottom", legend.direction="horizontal",
legend.title = element_blank())
我在 R 中有这个例子:
套餐
install.packages("plyr")
library(plyr)
install.packages("ggplot2")
library(ggplot2)
install.packages("ggthemes")
library(ggthemes)
这是我的代码:
uf <- c("AC","AC","AC","AC","AC","AC","AC","AC","AM","AM","AM",
"AM","AM","AM","AM","AM")
da <- c("Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada")
tr <- c(97,99,90.5,78.6,3,1,9.5,21.4,97.2,99.1,96.8,98.7,2.8,0.9,3.2,1.3)
resposta <- c("resposta","resposta","resposta","resposta","não resposta","não resposta","não resposta","não resposta","resposta","resposta","resposta","resposta",
"não resposta","não resposta","não resposta","não resposta")
taxa <- data.frame(uf, da, tr,resposta)
######_Adjusting data labels position_###############
taxa <- ddply(taxa, .(da), transform, pos = cumsum(tr) - (0.5 * tr)) # Ajusta a posição
g1 <- ggplot()+ geom_bar(aes(y = tr, x = da, fill = resposta), data = taxa,
stat="identity") +
facet_wrap(~uf) +
geom_text(data=taxa, aes(x = da, y = pos, label = tr), size=4) +
theme(legend.position="bottom", legend.direction="horizontal",
legend.title = element_blank())
g1
制作这个数字: Question for dependencia with facet for uf
我想生成此图,所有值都在条形图内。而y轴为100
如有任何帮助,我们将不胜感激。
我整理了你的代码并使用 ifelse
来确定标签的正确位置。
Library(ggplot2)
uf <- c("AC","AC","AC","AC","AC","AC","AC","AC","AM","AM","AM",
"AM","AM","AM","AM","AM")
da <- c("Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada","Federal", "Estadual", "Municipal", "Privada")
tr <- c(97,99,90.5,78.6,3,1,9.5,21.4,97.2,99.1,96.8,98.7,2.8,0.9,3.2,1.3)
resposta <- c("resposta","resposta","resposta","resposta","não resposta","não resposta","não resposta","não resposta","resposta","resposta","resposta","resposta",
"não resposta","não resposta","não resposta","não resposta")
taxa <- data.frame(uf, da, tr,resposta)
######_Adjusting data labels position_###############
taxa$pos <- ifelse(taxa$tr > 50, taxa$tr / 2, 100 - taxa$tr / 2)
ggplot(taxa, aes(y = tr, x = da, fill = resposta, label = tr)) +
geom_bar(stat="identity") +
geom_text(aes(y = pos), size=4) +
facet_wrap(~uf) +
theme(legend.position="bottom", legend.direction="horizontal",
legend.title = element_blank())