R语言gglikert()绘图优化:调整百分比、主题及X轴刻度
针对gglikert李克特图的三项调整方案
1. 仅展示反对合计、中间选项、赞同合计的百分比
先对原始李克特数据做分组处理,把左侧反对类选项合并为一组,右侧赞同类合并为一组,保留中间选项。假设你的数据框df中李克特类列(如q1、q2等)的选项是c("强烈反对", "反对", "中立", "赞同", "强烈赞同"),可以用dplyr完成分组:
library(dplyr) library(ggstats) library(ggplot2) # 定义李克特选项分组规则 group_likert <- function(x) { case_when( x %in% c("强烈反对", "反对") ~ "反对合计", x == "中立" ~ "中立", x %in% c("赞同", "强烈赞同") ~ "赞同合计" ) } # 对所有李克特列应用分组逻辑 df_grouped <- df %>% mutate(across(starts_with("q"), group_likert)) # 生成仅含三组的李克特图 p <- gglikert(df_grouped)
如果你的选项命名不同,只需修改case_when里的匹配值即可。
2. 设置纯白背景并隐藏网格线
直接在ggplot对象上叠加theme配置:
p <- p + theme( panel.background = element_rect(fill = "white", color = NA), # 纯白背景 panel.grid.major = element_blank(), # 隐藏主网格线 panel.grid.minor = element_blank() # 隐藏次网格线 )
3. 自定义X轴刻度为100% - 50% - 0% - 50% - 100%
使用scale_x_continuous修改刻度位置和标签:
p <- p + scale_x_continuous( breaks = c(-100, -50, 0, 50, 100), labels = c("100%", "50%", "0%", "50%", "100%") )
完整整合代码
library(dplyr) library(ggstats) library(ggplot2) # 数据分组处理 group_likert <- function(x) { case_when( x %in% c("强烈反对", "反对") ~ "反对合计", x == "中立" ~ "中立", x %in% c("赞同", "强烈赞同") ~ "赞同合计" ) } df_grouped <- df %>% mutate(across(starts_with("q"), group_likert)) # 生成并调整李克特图 gglikert(df_grouped) + theme( panel.background = element_rect(fill = "white", color = NA), panel.grid.major = element_blank(), panel.grid.minor = element_blank() ) + scale_x_continuous( breaks = c(-100, -50, 0, 50, 100), labels = c("100%", "50%", "0%", "50%", "100%") )
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

