Как определить расстояние между дополнительным баром в барплоте? - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу построить y1, y0 и их соотношение dy рядом.dy должно появиться на небольшом расстоянии позади основных баров.(Повернутые) отметки по оси x должны быть центрированы под тремя столбцами, которые принадлежат друг другу.

Некоторое время я возился с width и space, а также с at, ноЯ еще не понял обоснование этого.Наилучшим решением на данный момент было добавить новый график для dy, но он все еще далек от идеала.

barplot(rbind(d$y0, d$y1), beside=TRUE, xaxt="n", col=c("darkgrey", "white")
        # , width=c(1, 1, .2)
        , space=c(0, 2)
        )
barplot(d$dy, add=TRUE, width=.2, space=c(19, 25), col="blue", xaxt="n")
box()
axis(1, at=seq(1:7)*4 - 1.5, labels=2000:2006, las=2)

enter image description here

Как я могу сделать это с базовым сюжетом?Может ли кто-нибудь объяснить, как определить параметры?

Ожидаемый результат

Ожидаемый результат должен быть примерно таким.

enter image description here

Данные

d <- structure(list(y0 = c(837.4, 798.6, 817.9, 882.6, 870.3, 857.9, 
776.6), y1 = c(827.1, 790, 807.7, 871.9, 861.8, 849.5, 768.2), 
    dy = c(122.999761165512, 107.688454795893, 124.709622203203, 
    121.232721504646, 97.6674709870162, 97.9135097330686, 108.163790883338
    )), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7"))

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете добавить дополнительную (синюю) полосу в исходном блокпосте, чтобы выровнять ее правильно.Я также добавляю в полосу с нулевой высотой пространство синей полосой.Чтобы выстроить тики в линию, сохраните и используйте возврат от звонка на боксплот.

BP = barplot(rbind(d$y0, d$y1, rep(0,7), d$dy), beside=TRUE, 
    xaxt="n", width=c(1,1,0.4,0.2), space=c(0, 2),
    col=c("darkgrey", "white", "white", "blue"))
box()
axis(1, at=(BP[1,] + BP[2,])/2, labels=2000:2006, las=2)

Barplot

Согласно документации barplot,

Если высота - это матрица, а рядом - ИСТИНА, пробел может быть задан двумя числами, где первое - это пробел между столбцами в одной группе, а второе - пробел между группами.

, поэтому я использовал то, что у вас было space=c(0,2) дляне допускайте пробелов между столбцами и 2 единиц между группами.

Что касается ширины, я хотел оставить исходную ширину 1 для двух основных полос и 0,2 для меньшей синей полосы.Я попытался сделать полосу нулевой высоты шириной 0,2, но она казалась слишком близкой, поэтому я расширил пробел до 0,4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...