Как создать гистограмму для двух переменных, отраженных по оси X в R? - PullRequest
11 голосов
/ 09 августа 2011

У меня есть набор данных с переменной x и двумя переменными y1 и y2 (всего 3 столбца).Я хотел бы построить график y1 против x как столбчатую диаграмму над осью, а y2 - против того же x на том же графике под осью x, чтобы два столбчатых графика отражали друг друга.

Рисунок D ниже представляет собойпример того, что я пытаюсь сделать.

Figure **D**

Ответы [ 3 ]

17 голосов
/ 09 августа 2011

Используя 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

9 голосов
/ 09 августа 2011

Некоторые очень минимальные примеры для базовой графики и 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

0 голосов
/ 09 августа 2011

Это делается с помощью 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 кто-то другой может привести пример с базой и / или решеткой.

НТН

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