如何调整仅展示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
相关产品推荐
相关产品推荐

