Ошибка в FUN(X[[i]], …): значение объекта не найдено — НЕ орфографическая ошибка

#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")