如何使用ggplot2将标签/频率放在R中的geom_bar r上

时间:2016-05-02 14:52:14

标签: r charts ggplot2

那里。所以,这是我的代码:

library(ggplot2); library(scales); library(reshape2);
da1 <- read.table(text = "NÃO SIM
5 1
24 44
",sep = "",header = TRUE)
da1m <- melt(cbind(da1, ind = rownames(da1)), id.vars = c('ind'))
da1m$Resposta <- c( "NÃO", "SIM", "NÃO", "SIM" )
names(da1m) <- c("Resposta", "variable", "value")

ggplot(da1m,aes(x = variable, y = value,fill = Resposta)) + 
geom_bar(position = "fill",stat = "identity", colour = "black") + 
scale_y_continuous(labels = percent_format())+
labs(title = "Gráfico 1", x="Gosta de utilizar o R", 
    y="Há interessse em aprimorar os conhecimentos em R")+
scale_fill_manual(values=c("#E69F00", "#56B4E9"))+
geom_text(aes(label=value), position=position_dodge(width=0.9), 
        vjust=-0.5)

这就是我得到的:

geom_bar with label error

我做错了什么?当我尝试添加频率时,图表奇怪地开始也是geom_text的功能。

1 个答案:

答案 0 :(得分:0)

为了便于说明,这里有两个不同的文本标签定位选项,但您可以根据需要更改这些选项:

library(dplyr)

# Add two position locations for text labels (centered and top)
da1m = da1m %>% group_by(variable) %>%
  mutate(y.pos.ctr = cumsum(value) - 0.5*value,
         y.pos.top = cumsum(value))

ggplot(da1m, aes(x=variable, y=value, fill=Resposta)) + 
  geom_bar(stat = "identity", colour = "black") +  # get rid of position="fill"
  #scale_y_continuous(labels = percent_format()) +  # y values don't seem to be percentages
  labs(title = "Gráfico 1", x="Gosta de utilizar o R", 
       y="Há interessse em aprimorar os conhecimentos em R")+
  scale_fill_manual(values=c("#E69F00", "#56B4E9")) +
  geom_text(aes(label=value, y=y.pos.ctr), colour="white") +  # Centered value labels
  geom_text(aes(label=value, y=y.pos.top), colour="red")    # Value labels at top of each bar section

enter image description here