geom_hist 使用 purrr::pmap 采样后
geom_hist after using purrr::pmap to sample
我想使用 purrr::pmap
生成的结果绘制带有某些四分位数参考线的直方图。
我有以下数据
mean sd n
<dbl> <dbl> <dbl>
5.00 3.00 100
4.00 1.00 100
4.00 2.00 100
这里的数据是方便复制粘贴的格式
df <- tribble(
~mean, ~sd, ~n,
5.00, 3.00, 100,
4.00, 1.00, 100,
4.00, 2.00, 100)
我目前的代码是
df %>% pmap(rnorm)
问题是我现在有嵌套列表而不是整洁的数据框。如何整理我必须绘制 3 个直方图及其中位数、第 1 和第 3 个四分位数的参考线?
您可以使用 unnest()
整理数据,但为此需要将 pmap
-调用分配给 df 中的列(例如,在 mutate
- 调用中) .
library(tidyverse)
df <- df %>%
mutate(rnorm_data = pmap(list(n, mean, sd), rnorm)) %>%
group_by(mean_sd = interaction(mean, sd, sep = "_")) %>%
unnest()
df
# A tibble: 300 x 5
# Groups: mean_sd [3]
# mean sd n mean_sd rnorm_data
# <dbl> <dbl> <dbl> <fctr> <dbl>
# 1 5 3 100 5_3 4.737157
# 2 5 3 100 5_3 5.221150
# 3 5 3 100 5_3 3.855733
# 4 5 3 100 5_3 8.965053
# 5 5 3 100 5_3 2.608563
# 6 5 3 100 5_3 11.940414
# 7 5 3 100 5_3 8.213685
# 8 5 3 100 5_3 6.332804
# 9 5 3 100 5_3 6.233713
# 10 5 3 100 5_3 4.758685
# # ... with 290 more rows
我添加了 group_by
以供稍后在 ggplot
调用中参考并总结以下数据:
df_summarized <- df %>%
summarize(median = median(rnorm_data),
quart1st = quantile(rnorm_data, 0.25),
quart3rd = quantile(rnorm_data, 0.75)) %>%
gather(stat, value, median:quart3rd)
通过使用 gather
,我可以为不同的汇总统计信息提供不同的 linetypes
。
ggplot(df, aes(rnorm_data, fill = mean_sd, color = mean_sd)) +
geom_histogram() +
geom_vline(data = df_summarized,
aes(xintercept = value, linetype = stat, color = mean_sd))
我想使用 purrr::pmap
生成的结果绘制带有某些四分位数参考线的直方图。
我有以下数据
mean sd n
<dbl> <dbl> <dbl>
5.00 3.00 100
4.00 1.00 100
4.00 2.00 100
这里的数据是方便复制粘贴的格式
df <- tribble(
~mean, ~sd, ~n,
5.00, 3.00, 100,
4.00, 1.00, 100,
4.00, 2.00, 100)
我目前的代码是
df %>% pmap(rnorm)
问题是我现在有嵌套列表而不是整洁的数据框。如何整理我必须绘制 3 个直方图及其中位数、第 1 和第 3 个四分位数的参考线?
您可以使用 unnest()
整理数据,但为此需要将 pmap
-调用分配给 df 中的列(例如,在 mutate
- 调用中) .
library(tidyverse)
df <- df %>%
mutate(rnorm_data = pmap(list(n, mean, sd), rnorm)) %>%
group_by(mean_sd = interaction(mean, sd, sep = "_")) %>%
unnest()
df
# A tibble: 300 x 5
# Groups: mean_sd [3]
# mean sd n mean_sd rnorm_data
# <dbl> <dbl> <dbl> <fctr> <dbl>
# 1 5 3 100 5_3 4.737157
# 2 5 3 100 5_3 5.221150
# 3 5 3 100 5_3 3.855733
# 4 5 3 100 5_3 8.965053
# 5 5 3 100 5_3 2.608563
# 6 5 3 100 5_3 11.940414
# 7 5 3 100 5_3 8.213685
# 8 5 3 100 5_3 6.332804
# 9 5 3 100 5_3 6.233713
# 10 5 3 100 5_3 4.758685
# # ... with 290 more rows
我添加了 group_by
以供稍后在 ggplot
调用中参考并总结以下数据:
df_summarized <- df %>%
summarize(median = median(rnorm_data),
quart1st = quantile(rnorm_data, 0.25),
quart3rd = quantile(rnorm_data, 0.75)) %>%
gather(stat, value, median:quart3rd)
通过使用 gather
,我可以为不同的汇总统计信息提供不同的 linetypes
。
ggplot(df, aes(rnorm_data, fill = mean_sd, color = mean_sd)) +
geom_histogram() +
geom_vline(data = df_summarized,
aes(xintercept = value, linetype = stat, color = mean_sd))