Как создать график штрихов для двух переменных, отраженных по оси X в R?
У меня есть набор данных с переменной x и двумя переменными y1 и y2 (всего 3 столбца). Я хотел бы построить y1 против x в виде штрихового графика над осью и y2 против одного и того же x на том же участке под осью x, чтобы оба графика отображали друг друга.
Рисунок D ниже - пример того, что я пытаюсь сделать.
![Figure **D**]()
Ответы
Ответ 1
Используя ggplot
, вы будете использовать его следующим образом:
Настройте данные. Ничего странного здесь, но явно значения ниже оси будут отрицательными.
dat <- data.frame(
group = rep(c("Above", "Below"), each=10),
x = rep(1:10, 2),
y = c(runif(10, 0, 1), runif(10, -1, 0))
)
Использование графика ggplot
и geom_bar
. Чтобы предотвратить суммирование данных geom_bar
, укажите stat="identity"
. Аналогичным образом, стекирование должно быть отключено, указав position="identity"
.
library(ggplot2)
ggplot(dat, aes(x=x, y=y, fill=group)) +
geom_bar(stat="identity", position="identity")
![enter image description here]()
Ответ 2
Некоторые очень минимальные примеры для базовой графики и lattice
с использованием данных примера @Andrie:
dat <- data.frame(
group = rep(c("Above", "Below"), each=10),
x = rep(1:10, 2),
y = c(runif(10, 0, 1), runif(10, -1, 0))
)
В базовой графике:
plot(c(0,12),range(dat$y),type = "n")
barplot(height = dat$y[dat$group == 'Above'],add = TRUE,axes = FALSE)
barplot(height = dat$y[dat$group == 'Below'],add = TRUE,axes = FALSE)
![bar_base]()
и lattice
:
barchart(y~x,data = dat, origin = 0, horizontal = FALSE)
![enter image description here]()
Ответ 3
Это делается с помощью ggplot2.
Сначала дайте некоторые данные и положите два y вместе с расплавом.
library(ggplot2)
dtfrm <- data.frame(x = 1:10, y1 = rnorm(10, 50, 10), y2 = -rnorm(10, 50, 10))
dtfrm.molten <- melt(dtfrm, id = "x")
Затем сделайте граф
ggplot(dtfrm.molten, aes(x , value, fill = variable)) +
geom_bar(stat = "identity", position = "identity")
Perhpas кто-то другой может предоставить пример с базой и/или решеткой.
НТН