Как создать гистограмму с каждой переменной в виде столбца в ggplot2? - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю над симуляцией Монте-Карло, которая выплевывает матрицу с 10000 наблюдениями 8 числовых переменных.Я суммировал 8 переменных, используя dplyr, следующим образом:

# A tibble: 2 x 8
  V1     V2     V3     V4     V5    V6     V7    V8
 <dbl>  <dbl>  <dbl>  <dbl>  <dbl> <dbl>  <dbl> <dbl>
1 29196. 12470. 6821.  5958.  22375. 6512. 10931. 2732.
2  1675.   419.   59.1   15.5  1636.  408.   858.  312.

, где первая строка - среднее значение каждой переменной, а вторая строка - стандартное отклонение для каждой переменной.Как бы я использовал эту сводную статистику для создания гистограммы с 8 барами, высота которых является средним значением, а чья ошибка является стандартным отклонением?В основном я не уверен, как заполнить раздел "aes" на ggplot.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

, как @alistaire упомянул в комментариях, ваши данные на самом деле не в хорошей форме для построения графика с ggplot2 ... поэтому ниже приведен пример, где я настраиваю некоторые данные так, как ваши структурированы, используйте команду collect дляпотяните его в столбцы, затем снова соедините.Затем я строю графики, используя примеры отсюда: http://www.sthda.com/english/wiki/ggplot2-error-bars-quick-start-guide-r-software-and-data-visualization

Надеюсь, это поможет ...

library(tidyverse)                                         

df <- data.frame(V1=c(100, 20), V2=c(200,30), V3=c(150,15))
df                                                         
#>    V1  V2  V3
#> 1 100 200 150
#> 2  20  30  15

means <- df[1,]                                            
sds <-   df[2,]                                            

means_long <- gather(means, key='var', value='mean')       
means_long                                                 
#>   var mean
#> 1  V1  100
#> 2  V2  200
#> 3  V3  150

sds_long <- gather(sds, key='var', value='sd')             
sds_long                                                   
#>   var sd
#> 1  V1 20
#> 2  V2 30
#> 3  V3 15

sds_long %>%                                               
inner_join(means_long) ->                                  
combined_long                                              
#> Joining, by = "var"

combined_long                                              
#>   var sd mean
#> 1  V1 20  100
#> 2  V2 30  200
#> 3  V3 15  150

p <- ggplot(combined_long, aes(x=var, y=mean)) +           
geom_bar(stat="identity") +                                
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.2)   
p  

...