barp()设置ylim参数时Y轴柱状图显示异常问题求助
Fixing barp()'s Baseline Issue and Adding Zero Line to barplot()
我明白你遇到的问题了——用plotrix的barp()时,明明数据全是正值,但设置了包含负值的ylim后,柱子却从Y轴底部(比如-500)开始画,而不是从0基线起步,这确实很恼人。不过别担心,咱们分两种情况来解决你的需求:
一、修复barp()的基线问题
barp()函数其实有个base参数,默认值是0,但当你设置了包含负值的ylim且数据全正时,它可能没有正确识别基准线的位置。只需要显式指定base=0,就能让柱子从0开始绘制,同时保留你想要的Y轴范围,还能维持barp()自带零轴线、支持柱状图与线图对齐的优势。
修改后的代码如下:
library(plotrix) test.vector.positives = as.numeric(c(200,20,50,170,200,250,200,220,205,230,350)) months.index.abb = month.abb[c(8:12,1:6)] # 修复后的barp(),柱子从0基线正常绘制 barp( test.vector.positives, names.arg = months.index.abb, col = ifelse(test.vector.positives < 0, "red", "#108a4c"), main = "Fixed Figure 2: barp() with Positives & Negative ylim", ylim = c(-500,400), base = 0 # 关键:显式指定基线为0 )
二、给base包的barplot()添加零轴线
如果你偶尔需要用barplot(),又想模拟barp()的零轴线效果,只需要在绘图后调用abline()函数,指定水平线位置为0即可,还能自定义线条的样式:
test.vector.positives = as.numeric(c(200,20,50,170,200,250,200,220,205,230,350)) months.index.abb = month.abb[c(8:12,1:6)] barplot( test.vector.positives, names.arg = months.index.abb, col = ifelse(test.vector.positives < 0, "red", "#108a4c"), main = "Figure 4 with Zero Line", ylim = c(-500,400) ) # 添加零轴线,可调整线条宽度、颜色 abline(h = 0, lwd = 2, col = "black")
内容的提问来源于stack exchange,提问作者im2wddrf
相关产品推荐
相关产品推荐

