在 multithist 中没有 space 的框
box without space in multhist
假设数据
set.seed(42)
a <- rnorm(100)
b <- rnorm(100)+1
我想使用 multhist()
.
并排绘制
multhist(list(a,b), yaxs="i")
现在我想在它们周围画一个框
box(which = "plot", lty = "solid")
这给了我
在框的底线和条形之间有一些 space。
如果我使用 hist()
只绘制一张图,则输出框和条形图之间没有间隙:
在 multhist()
中是否有不同的技巧来获得这样的输出?
只需添加 "space=c(0,0)" 和 "ylim" 就可以了:
multhist(list(a,b), yaxs="i", space=c(0,0), ylim=c(0,40))
我认为@KamranEsmaeili 提到的设置 ylim
是一个标准的解决方案。这里我提供了一个不需要手动设置上限40的tricky方法。
multhist()
是在内置的barplot()
的基础上,始终将绘图区域的y坐标下限设置为小于0。可以使用par("usr")[3]
来检查这个事实。我只是想出了一个棘手的方法,将框类型调整为 "7"
以抑制底线并通过 abline(h = 0)
.
在 0 处添加一个新的底线
library(plotrix)
set.seed(42)
a <- rnorm(100)
b <- rnorm(100) + 1
multhist(list(a,b))
#---------------------------------
box(bty = "7") # bty is one of "o"(default), "l", "7", "c", "u", and "]".
abline(h = 0)
编辑
如果你不喜欢右边的线超出x轴,那你可以把box()
换成rect()
,这样你就可以自己指定四边的位置了。记得加xpd = TRUE
,不然线宽看起来会比y轴细
multhist(list(a,b))
x <- par("usr")
rect(x[1], 0, x[2], x[4], xpd = TRUE)
假设数据
set.seed(42)
a <- rnorm(100)
b <- rnorm(100)+1
我想使用 multhist()
.
multhist(list(a,b), yaxs="i")
现在我想在它们周围画一个框
box(which = "plot", lty = "solid")
这给了我
在框的底线和条形之间有一些 space。
如果我使用 hist()
只绘制一张图,则输出框和条形图之间没有间隙:
在 multhist()
中是否有不同的技巧来获得这样的输出?
只需添加 "space=c(0,0)" 和 "ylim" 就可以了:
multhist(list(a,b), yaxs="i", space=c(0,0), ylim=c(0,40))
我认为@KamranEsmaeili 提到的设置 ylim
是一个标准的解决方案。这里我提供了一个不需要手动设置上限40的tricky方法。
multhist()
是在内置的barplot()
的基础上,始终将绘图区域的y坐标下限设置为小于0。可以使用par("usr")[3]
来检查这个事实。我只是想出了一个棘手的方法,将框类型调整为 "7"
以抑制底线并通过 abline(h = 0)
.
library(plotrix)
set.seed(42)
a <- rnorm(100)
b <- rnorm(100) + 1
multhist(list(a,b))
#---------------------------------
box(bty = "7") # bty is one of "o"(default), "l", "7", "c", "u", and "]".
abline(h = 0)
编辑
如果你不喜欢右边的线超出x轴,那你可以把box()
换成rect()
,这样你就可以自己指定四边的位置了。记得加xpd = TRUE
,不然线宽看起来会比y轴细
multhist(list(a,b))
x <- par("usr")
rect(x[1], 0, x[2], x[4], xpd = TRUE)