R语言水平条形图末端添加百分比文本失败,求错误排查
嘿,我帮你找出代码里的问题啦!你没法在水平条形末端显示百分比,核心问题出在text()函数的参数使用上,咱们一步步理清楚:
问题分析
当barplot()设置horiz=TRUE时,它返回的my_bar是每个条形在y轴上的位置坐标,而不是x轴的数值位置。你原来的text(my_bar, mylabels, cex=1)完全搞反了坐标逻辑,而且没有设置文本的对齐方式,导致百分比根本不会出现在条形末端。
修正方案
只需要调整text()函数的参数,把文本定位到条形的右侧末端即可,同时可以加一点偏移让显示更美观:
完整修正代码
y <- c('Others(27%)','Environment','Family Life & children','Combating terrorism','Pensions', 'Europe', 'Housing', 'Education', 'Tax','Benefits','Immigration & Asylum','Health','Economy') x <- c(27,10,12,15,18,20,20,21,21,25,42,46,49) # 去掉了多余的....符号,让百分比更整洁 mylabels <- c('27%','10%','12%','15%','18%','20%','20%','21%','21%','25%','42%','46%','49%') par(mar=c(5,10,4,2)+0.1) usr <- par( "usr" ) my_bar <- barplot(x, main="British Voters Election Priority (2015)", horiz=TRUE, las = 1, names.arg=y, xlim=c(0, 60), border = 'black', col=rev(topo.colors(14)), xlab="Percentage (%)") abline(v=x, col='grey', type="l", lty=2) # 核心修正:定位到条形末端,左对齐避免重叠 text(x = x + 1, y = my_bar, labels = mylabels, cex = 1, adj = 0)
关键调整说明
x = x + 1:给文本加1个单位的偏移,避免和条形末端贴得太近,提升可读性;y = my_bar:对应每个条形在y轴上的位置,确保文本和条形垂直对齐;adj = 0:设置文本左对齐,让文本的起始位置刚好贴合条形的右侧末端;- 额外优化了
mylabels的内容,去掉多余符号让显示更整洁。
内容的提问来源于stack exchange,提问作者Nyom Kal
相关产品推荐
相关产品推荐

