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

如何调整仅展示2个数据项的R语言barplot柱状图的柱子宽度

R语言双数据项柱状图宽度调整解决方案

你遇到的问题是R基础绘图函数barplot()的特性导致的:柱子的显示宽度由width参数、space参数和绘图区域的横向宽度共同决定,单独调整width时,绘图区域横向宽度固定,函数会自动拉大间距占满可用空间,所以看起来宽度没有变化;只调大space就会出现柱子变窄但间距过大的问题。可参考以下几种方案解决:

方案1:同时调整width和space参数

barplot()的space参数代表柱子之间的间距,单位为当前柱子宽度的倍数,默认值为1。同时调整两个参数即可同时控制柱子宽度和间距:

predErr<-c(mars = MARS_Predictions_Err, svm = SVM_Predictions_Err)
# 可根据视觉需求调整width和space的数值
barplot(predErr, main = "Prediction Error Bar Chart", xlab = "Models", ylab = "Err", width = 0.4, space = 0.3, ylim = c(0,1000)) 

方案2:调整绘图区域边距压缩横向空间

通过par()函数加大画布左右两侧的边距,缩小中间绘图区域的横向宽度,柱子自然会收窄,无需调整柱子本身的参数:

predErr<-c(mars = MARS_Predictions_Err, svm = SVM_Predictions_Err)
# mar的四个数值依次对应下、左、上、右四个方向的边距大小
par(mar = c(5, 5, 4, 5))
barplot(predErr, main = "Prediction Error Bar Chart", xlab = "Models", ylab = "Err", ylim = c(0,1000)) 

方案3:使用ggplot2绘制(参数控制更直观)

ggplot2的柱状图宽度调整逻辑更直接,width参数直接控制柱子的绝对宽度,不会和间距强绑定:

library(ggplot2)
# 转换数据格式
df <- data.frame(
  Model = names(predErr),
  Err = predErr
)
ggplot(df, aes(x = Model, y = Err)) +
  geom_col(width = 0.3) + # 调整width数值即可直接修改柱子宽度
  labs(title = "Prediction Error Bar Chart", x = "Models", y = "Err") +
  ylim(0, 1000) +
  theme_classic()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:09