如何在R语言条形图中隐藏条形下方的分组标签
如何在R语言条形图中隐藏条形下方的分组标签
问题描述
我想要生成一个没有条形下方分组标签的条形图,只保留条形本身,不显示x轴下方的那些名称。
我尝试使用names.arg = ""来实现,结果却弹出了错误:
Error in barplot.default(stats::xtabs(mf, addNA = TRUE), horiz = horiz, :
incorrect number of names
我明白names.arg的长度需要和条形的数量对应,但我不想手动去统计条形数量,再写names.arg = rep("", 50)这种麻烦的代码。有没有更省心的方法直接隐藏这些标签呢?
示例测试代码
barplot(c(x = 1))
解决方案
别发愁,这有几个简单的方法,完全不用手动数条形数量:
方法1:直接关闭x轴显示
在barplot()函数里设置axes = FALSE,这样整个x轴的元素(包括刻度和标签)都会被隐藏。如果需要保留y轴的话,再手动添加回去就好:
# 隐藏x轴,保留y轴 barplot(c(x = 1), axes = FALSE) axis(2) # 手动绘制y轴
方法2:利用R的向量循环特性设置空标签
其实不用手动生成对应长度的空向量,直接给names.arg传一个长度为1的空字符串,R会自动循环这个字符串来匹配所有条形的数量,这样既不会报错,也能隐藏标签:
# 单条形示例 barplot(c(x = 1), names.arg = "") # 多条形也适用 barplot(c(x = 1, y = 2, z = 3), names.arg = "")
方法3:生成图表后修改x轴标签
如果已经绘制好了条形图,还可以通过axis()函数重新设置x轴的标签为空,需要先把条形图的位置存下来,再定位修改:
# 保存条形图的位置 bp_pos <- barplot(c(x = 1)) # 重新绘制x轴,设置空标签 axis(1, at = bp_pos, labels = "")
备注:内容来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

