Добавление заданных значений столбцов в виде мин. / Макс. Столбцов ошибок в R - PullRequest
0 голосов
/ 04 марта 2019

Прошу прощения, если об этом уже спрашивали, но трудно сформулировать, чтобы найти ответ.

У меня есть следующий набор данных ниже.В R я хотел бы построить гистограмму для PV1 и PV2 для AvgRead и AvgUniq.Для панелей ошибок я хотел бы установить MinRead и MinUniq в качестве минимумов, а MaxRead и MaxUniq в качестве максимумов.

Если вы могли бы помочь, это было бы очень признательно.Снова мои извинения, если об этом уже спрашивали.

         AvgRead  MinRead  MaxRead AvgUniq MinUniq MaxUniq
PV1          20     10        40     40       20     80
PV2          40     20        80     80       40     160

1 Ответ

0 голосов
/ 04 марта 2019

Вам нужно немного изменить данные, используя функции melt() и dcast() из reshape2:

library(reshape2)
library(ggplot2)

df <- data.frame(
  row.names = c("PV1", "PV2"),
  AvgRead = c(20, 40),
  MinRead = c(10, 20),
  MaxRead = c(40, 80),
  AvgUniq = c(40, 80),
  MinUniq = c(20, 40),
  MaxUniq = c(70, 160)
)

df$name <- row.names(df)

df_molten <- melt(df)
df_molten$var1 <- substr(df_molten$variable, 1, 3)
df_molten$var2 <- substr(df_molten$variable, 4, 10000)

df_cast <- dcast(df_molten, name + var2 ~ var1, value.var = "value")

ggplot(data = df_cast, aes(x = name, y = Avg, fill = var2)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_errorbar(
    aes(ymin = Min, ymax = Max),
    width = 0.5,
    size = 1.3,
    position = position_dodge(0.9)
  )

enter image description here

РЕДАКТИРОВАТЬ: , чтобы изменить порядок баров, вам нужно изменить var2 на факторы и соответственно отсортировать уровни:

df_cast <- dcast(df_molten, name + var2 ~ var1, value.var = "value")
df_cast$var2 <- factor(df_cast$var2, levels = c("Uniq", "Read"))

ggplot(data = df_cast, aes(x = name, y = Avg, fill = var2)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_errorbar(
    aes(ymin = Min, ymax = Max),
    width = 0.5,
    size = 1.3,
    position = position_dodge(0.9)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...