首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将标签添加到likert刻度图中

将标签添加到likert刻度图中
EN

Stack Overflow用户
提问于 2016-05-04 22:51:45
回答 2查看 2.3K关注 0票数 1

我想添加标签到一个likert比例手工制作的情节。然而,当我试图添加标签时,我只在右边/位置得到一些值,如图中所示。为什么不起作用?

套餐:

代码语言:javascript
复制
   library(dplyr)
    library(tidyr)
    library(ggplot2)
    library(scales)

数据示例:

代码语言:javascript
复制
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

情节:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)

票数 1
EN

Stack Overflow用户

发布于 2016-05-05 07:52:53

要显示百分比值,请在行中添加label = paste(percent*100, "%")

代码语言:javascript
复制
gg <- gg + geom_text(data=filter(lik, percent<0), aes(x=Serviços, y=percent, group=Response,label = paste(percent*100, "%")))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37039413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档