微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R-ggplot2-plot_likert-在一张图上绘制有关主题的两个不同的李克特量表

如何解决R-ggplot2-plot_likert-在一张图上绘制有关主题的两个不同的李克特量表

如果有一种方法可以使用ggplot2或类似图形进行绘制,则可以节省我的时间。我有关于员工福利的规模数据。一个问题将询问福利有多重要,而下一个问题将询问员工对福利的满意程度。


dat <- structure(list(`Medical Insurance` = structure(c(3L,3L,3L),.Label = c("Neutral / Undecided","Not at all Important","Very Important"),class = "factor"),`Medical: Overall` = structure(c(3L,4L,.Label = c("Don't Use","Less Satisfied","Satisfied","Very Satisfied"),`Wellness Program` = structure(c(3L,1L,1L),`Medical: Wellness Program` = structure(c(3L,`Employee Assistance Program` = structure(c(1L,`Employee Assistance Program2` = structure(c(1L,2L,class = "factor")),row.names = c(NA,10L),class = "data.frame")

我可以分别绘制每个比例尺:

ben.imp <- dat[,seq(1,5,2)]
ben.sat <- dat[,seq(2,6,2)]

library(ggthemes)
library(stringr)
library(sjplot)
library(sjmisc)
library(ggplot2)
library(wesanderson)

col2 <- c(wes_palettes$GrandBudapest1[2],wes_palettes$Cavalcanti1[4])

likert.ben <- plot_likert(ben.imp,cat.neutral = 1,sort.frq="neg.desc",reverse.colors=T,values = "show",show.n=F,digits=0,show.prc.sign=T,show.legend=T,geom.colors=col2,cat.neutral.color=col1[1])+  
                    theme(
                legend.title=element_text(size=14),axis.text=element_text(size=12,face="bold"),legend.text=element_text(size=12),panel.background = element_rect(fill = "transparent",colour = NA),plot.background = element_rect(fill = "transparent",#panel.border=element_blank(),panel.grid.major=element_blank(),panel.grid.minor=element_blank()
                    )+
                guides(fill = guide_legend(reverse=TRUE))+
    geom_text(size=5,position = position_dodge2(width=0.9),vjust=0)



col4 <- c("gray",wes_palettes$GrandBudapest1[2],wes_palettes$Darjeeling2[4],wes_palettes$Cavalcanti1[4])

likert.bensat <- plot_likert(ben.sat,catcount=4,geom.colors=col4,vjust=0)

但是我希望看到这样的情节:

enter image description here

那有多容易?还是我只需要在photoshop中做? :/

解决方法

我不知道您是否可以使用plot_likert来做到这一点,但是您可以自然地使用ggplot来做到这一点。不过,您需要先重塑数据:

library(tidyr)
library(dplyr)

names(ben.imp) <- c("Insurance","Wellness","Assistance")
names(ben.sat) <- c("Insurance","Assistance")

ben.imp <- pivot_longer(ben.imp,1:3) %>% mutate(class = "Importance")
ben.sat <- pivot_longer(ben.sat,1:3) %>% mutate(class = "Satisfaction")

df <- rbind(ben.imp,ben.sat)
df$value <- factor(df$value,c())

ggplot(df,aes(x = class,fill = value)) + 
  geom_bar() +
  facet_grid(~name,switch = "x") +
  scale_x_discrete(expand = c(0.1,0.4)) +
  scale_fill_manual(values = c("#a04ca4","#c7bfe6","#00000000","#4d7b9c","#ea9138","#e05554")) +
  theme_classic() +
  theme(panel.spacing = unit(0,"points"),strip.background = element_blank(),strip.placement = "outside")

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。