You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:18:23