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

Base R中解决RMarkdown转PDF时柱状图分类X轴标签截断问题

在Base R中完整显示柱状图X轴分类标签的解决办法

方案1:用正确参数调整X轴标签字体大小

你之前使用的cex.axis是控制坐标轴数值刻度(比如Y轴的0、10、20这类数值)的字体大小,而barplot的X轴分类标签需要用cex.names参数来调整:

# 提取t1的列名作为X轴标签(适用于t1为矩阵/表格的情况)
x_labels <- colnames(t1)

barplot(t1,
        legend = TRUE, 
        main="Commitment to Conserving Water vs. Age of Voice and Familiarity of Imagery", 
        xlab = "Voice - Familiarity Level", 
        ylab = "Number of Participants",
        ylim = c(0,40), 
        beside = TRUE,
        cex.names = 0.8,  # 缩小标签字体,可根据需求调整数值
        names.arg = x_labels)  # 显式指定X轴标签,确保对应正确

方案2:旋转X轴标签并调整边距

如果缩小字体仍无法完整显示,可以将标签旋转,同时加大图形底部边距给标签留出空间:

# 调整图形边距:mar参数顺序为「下、左、上、右」,默认是c(5,4,4,2)+0.1,这里加大底部边距
par(mar = c(8, 4, 4, 2) + 0.1)

barplot(t1,
        legend = TRUE, 
        main="Commitment to Conserving Water vs. Age of Voice and Familiarity of Imagery", 
        xlab = "Voice - Familiarity Level", 
        ylab = "Number of Participants",
        ylim = c(0,40), 
        beside = TRUE,
        cex.names = 0.8,
        las = 2)  # las=2让X轴标签垂直竖排,避免横向截断

# 若需要倾斜标签(比如45度),可手动绘制标签:
bar_pos <- barplot(t1,
                   legend = TRUE, 
                   main="Commitment to Conserving Water vs. Age of Voice and Familiarity of Imagery", 
                   xlab = "Voice - Familiarity Level", 
                   ylab = "Number of Participants",
                   ylim = c(0,40), 
                   beside = TRUE,
                   xaxt = "n")  # 关闭默认X轴标签绘制
text(bar_pos, par("usr")[3]-1,  # 设置标签位置:柱状图中心,Y轴底部下方1单位
     labels = colnames(t1), 
     srt = 45,  # 旋转45度
     adj = 1,  # 标签右对齐
     cex = 0.8)

方案3:给长标签手动换行

如果标签过长,可通过\n将标签拆分为多行,减少横向长度:

# 自动替换分隔符为换行(这里以" - "为例),也可手动修改标签
x_labels <- gsub(" - ", "\n", colnames(t1))

barplot(t1,
        legend = TRUE, 
        main="Commitment to Conserving Water vs. Age of Voice and Familiarity of Imagery", 
        xlab = "Voice - Familiarity Level", 
        ylab = "Number of Participants",
        ylim = c(0,40), 
        beside = TRUE,
        names.arg = x_labels,
        cex.names = 0.9)

内容的提问来源于stack exchange,提问作者Crystal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:50:46