коробка без пробела в мультистист - PullRequest
2 голосов
/ 10 апреля 2020

Предположим, данные

set.seed(42)
a <- rnorm(100)
b <- rnorm(100)+1

, которые я хотел бы построить рядом, используя multhist().

multhist(list(a,b), yaxs="i")

Теперь я хотел бы нарисовать рамку вокруг них

box(which = "plot", lty = "solid")

, что дает мне

using multhist

с некоторым расстоянием между нижней строкой прямоугольника и столбцами.

Если бы я использовал hist() для построения только одного графика, выходной сигнал был бы без промежутка между прямоугольником и столбцами:

using hist

Есть ли другой способ получить такой вывод в multhist()?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Я думаю, настройка ylim, упомянутая @KamranEsmaeili, является стандартным решением. Здесь я представил хитрый способ, который не требует ручной установки верхнего предела 40.


multhist() основан на встроенном barplot() и всегда устанавливает нижний предел у- координата области построения меньше 0. Вы можете использовать par("usr")[3], чтобы проверить этот факт. Я только что придумал хитрый метод, который настраивает тип поля на "7", чтобы подавить нижнюю строку и добавить новую нижнюю строку на 0 на 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)
1 голос
/ 10 апреля 2020

Просто добавьте "пробел = c (0,0)" и "ylim", и вы хорошо к go:

multhist(list(a,b), yaxs="i", space=c(0,0), ylim=c(0,40))

enter image description here

...