R语言gglikert堆叠图报错及配套计数图制作问题
问题解答
一、「unused argument (cutoff = 5)」错误原因及修复
gglikert() 绘图函数本身不支持 cutoff 参数,官方文档中提到的 cutoff 是用于合并低频类别的参数,归属 likert_count() 或 likert_proportion() 这类数据预处理函数。该参数的作用是将出现次数少于阈值的类别合并为“其他”组,减少类别数量。
正确用法是先通过预处理函数传入 cutoff 处理数据,再将结果传给 gglikert():
library(ggstats) library(ggplot2) # 预处理数据:合并出现次数<5的压力水平类别 processed_data <- likert_count(df, var = var, val = val1, cutoff = 5) # 绘制堆叠likert图 gglikert(processed_data)
二、制作与gglikert排序一致的国家计数条形图并水平对齐
gglikert默认会基于压力水平的分布特征(如中位数、加权得分)对国家进行排序,要让计数图匹配该排序并实现水平对齐,按以下步骤操作:
- 提取likert图的国家排序
从生成的likert图对象中提取已经排好序的国家列表:
# 生成likert图对象 likert_plot <- gglikert(processed_data) # 提取排序后的国家顺序 sorted_countries <- unique(likert_plot$data$var)
- 绘制匹配排序的计数条形图
将国家列转换为因子,指定水平为提取到的排序结果,保证和likert图的国家顺序一致:
# 绘制计数条形图(coord_flip()保持和likert图同方向) count_plot <- ggplot(df, aes(x = factor(var, levels = sorted_countries), y = ..count..)) + geom_bar(fill = "#3498db") + coord_flip() + labs(x = "国家", y = "样本计数") + theme_minimal()
- 水平对齐两个图表
使用patchwork包拼接图表并开启水平对齐:
library(patchwork) # 拼接并对齐,可通过widths调整两图宽度比例 likert_plot + count_plot + plot_layout(align = "h", widths = c(3, 1))
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

