我想添加标签到一个likert比例手工制作的情节。然而,当我试图添加标签时,我只在右边/位置得到一些值,如图中所示。为什么不起作用?
套餐:
library(dplyr)
library(tidyr)
library(ggplot2)
library(scales)数据示例:
Servicos <- read.table(text="Serviços, Muito, Pouco, Nunca, NS/NR
A,.513,.328,.081, .078
B,.387,.423,.109,.081
C, .301, .384, .209, .105
D, .355, .344, .204, .097
E, .317, .412, .191, .080
F, .092, .474, .341, .093", sep=",", header=TRUE, stringsAsFactors=FALSE)
Servicos %>%
gather(Response, percent, -Serviços) -> likert
likert %>%
filter(Response=="NS.NR") %>%
arrange(desc(percent)) %>% .$Serviços -> ind_order
likert %>%
mutate(Serviços=factor(Serviços, levels=ind_order, ordered=TRUE)) %>%
mutate(Response=factor(Response,
levels=c("Muito", "Pouco", "Nunca", "NS.NR"), ordered=TRUE,
labels=c("Muito", "Pouco", "Nunca", "NS/NR"))) %>%
mutate(percent=ifelse(Response %nin% c("Muito", "Pouco", "NS/NR"), -percent, percent)) -> lik情节:
gg <- ggplot()
gg <- gg + geom_hline(yintercept=0)
gg <- gg + geom_bar(data=filter(lik, percent<0), width=.75,
stat="identity", position="stack",
aes(x=Serviços, y=percent, fill=Response))
gg <- gg + geom_bar(data=filter(lik, percent>=0), width=.75,
stat="identity", position="stack",
aes(x=Serviços, y=percent, fill=Response))
gg <- gg + geom_text(data=filter(lik, percent<0), aes(x=Serviços, y=percent, group=Response,label = percent))
gg <- gg + scale_x_discrete(expand=c(0, .75))
gg <- gg + scale_fill_manual(values=c( "#4393c3", "#92c5de","#b2182b", "gray"),
drop=FALSE)
gg <- gg + scale_y_continuous(expand=c(0,.10),
breaks=seq(-.35, 1, .25),
limits=c(-.35, .95),
labels=percent_format())
gg <- gg + coord_flip()
gg <- gg + theme_bw()
gg <- gg + theme(axis.ticks=element_blank())
gg <- gg + theme(panel.border=element_blank())
gg <- gg + theme(panel.grid.major.y = element_blank())
gg <- gg + theme(panel.grid=element_blank())
gg

发布于 2016-05-05 14:08:54
在mpalanco部分答案的基础上,您可以使用两行不同的geom_text代码来解决这个问题:
gg <- gg + geom_text(data=filter(lik, percent<0), aes(x=Serviços, y = percent, group=Response,label = paste(percent*100, "%")), position = "stack", hjust = -.2, size = 2.5, color="white")
gg <- gg + geom_text(data=filter(lik, percent>0), aes(x=Serviços, y = percent, group=Response,label = paste(percent*100, "%")), position = "stack", hjust = 1, size = 2.5)

发布于 2016-05-05 07:52:53
要显示百分比值,请在行中添加label = paste(percent*100, "%"):
gg <- gg + geom_text(data=filter(lik, percent<0), aes(x=Serviços, y=percent, group=Response,label = paste(percent*100, "%")))

https://stackoverflow.com/questions/37039413
复制相似问题