如何在 ggplot2 中创建一个条形图,每个变量都作为条形图?
How do I create a bar plot with each variable as a bar in ggplot2?
我正在研究 Monte Carlo 模拟,该模拟吐出一个矩阵,其中包含 8 个数字变量的 10000 个观察值。我使用dplyr总结了8个变量如下:
# 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 个条形图的条形图,其高度为平均值,其误差条为标准差?我主要不确定如何填写 ggplot 的 "aes" 部分。
提前致谢。
正如@alistaire 在评论中提到的那样,您的数据并不是真正适合使用 ggplot2
进行绘制...所以下面是一个示例,我按照您的结构设置了一些数据, 使用 gather 将其拉入列中,然后将其重新加入。然后我使用这里的示例进行绘图: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
我正在研究 Monte Carlo 模拟,该模拟吐出一个矩阵,其中包含 8 个数字变量的 10000 个观察值。我使用dplyr总结了8个变量如下:
# 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 个条形图的条形图,其高度为平均值,其误差条为标准差?我主要不确定如何填写 ggplot 的 "aes" 部分。
提前致谢。
正如@alistaire 在评论中提到的那样,您的数据并不是真正适合使用 ggplot2
进行绘制...所以下面是一个示例,我按照您的结构设置了一些数据, 使用 gather 将其拉入列中,然后将其重新加入。然后我使用这里的示例进行绘图: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