У меня была ошибка, чтобы добавить текст в лесной участок с помощью ggplot2 - PullRequest
0 голосов
/ 23 января 2019

Я нахожу некоторый R-код для построения леса с использованием ggplot2, комбинируя рисунок с текстом. Однако, когда я запускаю код, появляется сообщение об ошибке, и текстовый фрейм не появляется, хотя рисунок выглядит хорошо. Я буду очень признателен за любые предложения о том, как исправить код. Спасибо!

library(ggplot2)    
library(gridExtra)

dat <- data.frame(group = factor(c("A","B","C","D","E","F","G"),     
       levels=c("F","E","D","C","B","A","G")),    
       cen = c(3.1,2.0,1.6,3.2,3.6,7.6,NA),    
       low = c(2,0.9,0.8,1.5,2,4.2,NA), 
       high = c(6,4,2,6,5,14.5,NA))     

theme_set(theme_bw())   
theme_update(   
     axis.line = element_line(colour = "black"),    
     panel.grid.major = element_blank(),    
     panel.grid.minor = element_blank(),    
     panel.border = element_blank(),    
     panel.background = element_blank(),    
     axis.text.y = element_blank(), 
     axis.ticks.y = element_blank(),    
     plot.margin = unit(c(0,0,0,0), "lines")    
)   

lab <- data.frame(  
          V0 = factor(c("A","B","C","D","E","F","G","A","B","C","D","E","F","G",                          
                                 "A","B","C","D","E","F","G","A","B","C","D","E","F","G"),  
           levels=c("G","F","E","D","C","B","A")),  
            V05 = rep(c(1,2,3,4),each=7),     
             V1=c("Occuption","Active","","Inactive","","Inactive","","Recreation", 
                       "Inactive","", "Active","","Inactive","",    
                         "Gender","Men","Women","Men","Women","Men","Women",    
                         "OR",3.1,2.0,1.6,3.2,3.6,7.6)) 

data_table <- ggplot(lab, aes(x = V05, y = V0,  
                  label = format(V1, nsmall = 1))) +    
                  geom_text(size = 4, hjust=0, vjust=0.5) + theme_bw() +    
                  geom_hline(aes(yintercept=c(6.5,7.5))) +  
                  theme(panel.grid.major = element_blank(),     
                  legend.position = "none", 
                  panel.border = element_blank(),    
                   axis.text.x = element_text(colour="white"),#element_blank(), 
                   axis.text.y = element_blank(),   
                   axis.ticks = element_line(colour="white"),#element_blank(),  
                   plot.margin = unit(c(0,0,0,0), "lines")) +   
                   labs(x="",y="") +    
  coord_cartesian(xlim=c(1,4.5))    

p
data_table 

##{r forest_plot_1, fig.width=8, fig.height=4, tidy=F}
grid.arrange(data_table, p, ncol=2)

Здесь что-то не так, как показано ниже:

Предупреждающие сообщения: 1: Удалены 1 строка, содержащая пропущенные значения (geom_point) 2: Удалены 1 строка, содержащая пропущенные значения (geom_errorbarh).

data_table Ошибка: Эстетика должна иметь длину 1 или совпадать с данными (28): yintercept

{r forest_plot_1, fig.width = 8, fig.height = 4, tidy = F}

grid.arrange (data_table, p, ncol = 2) Ошибка: Эстетика должна иметь длину 1 или совпадать с данными (28): yintercept

1 Ответ

0 голосов
/ 23 января 2019

Я думаю, что ошибка в слое горизонтальной линии. Вот код, который работал для меня

data_table <- ggplot(lab, aes(x = lab$V05, y = lab$V0, label = format(V1, nsmall = 1))) +    
geom_text(size = 4, hjust=0, vjust=0.5) + theme_bw() +    
geom_hline(aes(yintercept=6.5)) +  
geom_hline(aes(yintercept=3)) 

enter image description here

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