Я хотел бы выровнять нижнюю barplot
в следующем, чтобы группы располагались вертикально между двумя графиками:
par(mfrow = c(2, 1))
n = 1:5
barplot(-2:2, width = n, space = .2)
barplot(matrix(-10:9, nrow = 4L, ncol = 5L), beside = TRUE,
width = rep(n/4, each = 5L), space = c(0, .8))
Я некоторое время смотрел на определение аргументов space
и width
для barplot
(от ?barplot
), и я действительно ожидал, что вышеприведенное сработает (но, очевидно, это не сработало) :
width
- необязательный вектор ширины стержня. Повторно циклически повторяйте количество нарисованных баров. Указание одного значения не будет иметь видимого эффекта ...
space
- количество места (в виде доли от средней ширины бара), оставшегося перед каждым баром. Может быть дано как одно число или одно число за бар. Если height
- это матрица, а beside
- это TRUE
, space
может быть задано двумя числами, где первое - это пробел между столбцами в одной группе, а второе - пробел между группами. Если не указано явно, по умолчанию используется c(0,1)
, если height
- матрица, а beside
- TRUE
, и 0.2
в противном случае.
Насколько я понимаю, это означает, что мы должны иметь возможность сопоставить ширину группы на верхнем графике, разделив каждую группу на 4 (следовательно, n/4
). Для space
, так как мы делим ширину каждого бара на 4, средняя ширина также будет; следовательно, мы должны умножить дробь на 4, чтобы компенсировать это (следовательно, space = c(0, 4*.2)
).
Однако, похоже, это игнорируется. На самом деле, кажется, что все коробки имеют одинаковую ширину! Работая вокруг, я смог изменить относительную ширину внутри группы .
Можно ли будет выполнить то, что я имею в виду с barplot
? Если нет, может кто-нибудь сказать, как это сделать, например, ggplot2