#r #ggplot2
#r #ggplot2
Вопрос:
Я создаю гистограмму и пытаюсь добавить к ней горизонтальную полосу ошибок.
Вот заголовок графика.qc
spec Value Gain
1 CA 0.3649156 H.P
2 CA 0.3585836 H.P
3 CA 0.2731337 H.P
4 CA 0.3556054 H.P
5 CA 0.3294501 H.P
6 CA 0.3465670 H.P
вот глава графика.сравните
Gain spec mean median n sd SE_H ymin ymax
<chr> <fct> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl>
1 H.NP CA -0.0333 -0.0310 70 0.0174 0.00208 -0.0507 -0.0159
2 H.NP CAF 0.0324 0.0193 54 0.0530 0.00721 -0.0206 0.0853
3 H.NP CAH 0.0490 0.0503 20 0.0698 0.0156 -0.0208 0.119
4 H.NP CAL 0.000585 -0.00805 28 0.0468 0.00884 -0.0462 0.0473
5 H.NP CAM 0.00288 -0.0125 72 0.0480 0.00566 -0.0451 0.0509
6 H.NP CAR 0.0211 0.00845 90 0.0383 0.00404 -0.0172 0.0595
Вот мой код для графика
ПРИМЕЧАНИЕ: ошибка появляется только в том случае, если я не включаю geom_errorbarh
geom_histogram(position = "identity", alpha = 0.60, bins = 50)
geom_density(alpha=0.3)
geom_vline(data= graph.compare, aes(xintercept = mean), color = "red", linetype = "dashed")
geom_vline(data=graph.compare, aes(xintercept = median), color="blue", linetype="dashed")
geom_errorbarh(data = graph.compare, aes(xmin = ymin, xmax = ymax), width =0.2)
facet_wrap(spec~., scales="free", ncol=3)
newtheme
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
legend.position = "bottom")
Когда я запускаю это, я получаю сообщение об ошибке
Error in FUN(X[[i]], ...) : object 'Value' not found
Не уверен, что происходит, я просмотрел некоторую информацию и обнаружил, что мне может понадобиться распространить и повторно собрать мои данные, но я действительно не понимаю, почему. Опять же, это не проблема, если я просто закомментирую geom_errorbarh , все остальное (включая geom_vline) создаст график без проблем.
Спасибо за любую помощь!
Комментарии:
1. Можете ли вы показать полный код для графика
Ответ №1:
Несмотря на то, что код неполон, используя фрагменты данных, которыми вы поделились, можно было воспроизвести ошибку. Ошибка возникает из-за отсутствия переменной Value
in graph.compare
(функция ищет начальную координату, определенную на графике), а также вам необходимо установить y
координату для панели ошибок. Здесь я добавил в artesanal возможное значение для Value
в указанном наборе данных, но с вашими реальными данными вы сможете добавить его правильно. Также были внесены небольшие изменения при geom_errorbarh()
добавлении y
. Далее код:
library(ggplot2)
#Add variable Value
graph.compare$Value <- c(0.15,0.025,0.048,-0.004,-0.005,0.015)
#Code
ggplot(graph.qc,aes(x=Value))
geom_histogram(position = "identity", alpha = 0.60, bins = 50)
geom_density(alpha=0.3)
geom_vline(data= graph.compare, aes(xintercept = mean), color = "red", linetype = "dashed")
geom_vline(data=graph.compare, aes(xintercept = median), color="blue", linetype="dashed")
geom_errorbarh(data = graph.compare, aes(xmin = ymin, xmax = ymax,y=5), width =0.2)
facet_wrap(spec~., scales="free", ncol=3)
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
legend.position = "bottom")
Вывод:
Также для примера я использовал graph.qc
для эскиза сюжета.
Некоторые используемые данные:
#Data 1
graph.qc <- structure(list(spec = c("CA", "CA", "CA", "CA", "CA", "CA"),
Value = c(0.3649156, 0.3585836, 0.2731337, 0.3556054, 0.3294501,
0.346567), Gain = c("H.P", "H.P", "H.P", "H.P", "H.P", "H.P"
)), class = "data.frame", row.names = c("1", "2", "3", "4",
"5", "6"))
#Data 2
graph.compare <- structure(list(Gain = c("H.NP", "H.NP", "H.NP", "H.NP", "H.NP",
"H.NP"), spec = c("CA", "CAF", "CAH", "CAL", "CAM", "CAR"), mean = c(-0.0333,
0.0324, 0.049, 0.000585, 0.00288, 0.0211), median = c(-0.031,
0.0193, 0.0503, -0.00805, -0.0125, 0.00845), n = c(70L, 54L,
20L, 28L, 72L, 90L), sd = c(0.0174, 0.053, 0.0698, 0.0468, 0.048,
0.0383), SE_H = c(0.00208, 0.00721, 0.0156, 0.00884, 0.00566,
0.00404), ymin = c(-0.0507, -0.0206, -0.0208, -0.0462, -0.0451,
-0.0172), ymax = c(-0.0159, 0.0853, 0.119, 0.0473, 0.0509, 0.0595
)), row.names = c(NA, -6L), class = "data.frame")