r - ggplot facet_wrap histogram 使用 binwidth 作为列值
问题描述
我有一个要在其上使用 facet_wrap 的 data.frame。我的数据如下所示:
head(anomalize_long_facet_tbl, 18)
# A time tibble: 18 x 4
# Index: arrival
# Groups: time_segment [9]
arrival value time_segment bw_value
<dttm> <int> <chr> <dbl>
1 2019-01-01 00:00:00 300 arr_to_dta_minutes 66.4
2 2019-01-01 00:00:00 83 dta_to_adm_ord_entry_minutes 9.53
3 2019-01-01 00:00:00 2 adm_ord_to_adm_confirm_minutes 7.46
4 2019-01-01 00:00:00 2 adm_confirm_to_tack_minutes 2.39
5 2019-01-01 00:00:00 17 track_to_adm_bed_minutes 3.42
6 2019-01-01 00:00:00 346 adm_bed_to_leave_ed_minutes 41.6
7 2019-01-01 00:00:00 12 first_non_er_bed_minutes 126.
8 2019-01-01 00:00:00 750 arrival_to_leave_ed_minutes 118.
9 2019-01-01 00:00:00 762 arr_to_first_non_er_bed_minutes 126.
10 2019-01-01 00:00:00 156 arr_to_dta_minutes 66.4
11 2019-01-01 00:00:00 53 dta_to_adm_ord_entry_minutes 9.53
12 2019-01-01 00:00:00 5 adm_ord_to_adm_confirm_minutes 7.46
13 2019-01-01 00:00:00 0 adm_confirm_to_tack_minutes 2.39
14 2019-01-01 00:00:00 4 track_to_adm_bed_minutes 3.42
15 2019-01-01 00:00:00 239 adm_bed_to_leave_ed_minutes 41.6
16 2019-01-01 00:00:00 8 first_non_er_bed_minutes 126.
17 2019-01-01 00:00:00 457 arrival_to_leave_ed_minutes 118.
18 2019-01-01 00:00:00 465 arr_to_first_non_er_bed_minutes 126.
我想使用数据创建一个 3x3 facet_wrap geom_histogram 图。我写了以下内容:
anomalize_long_facet_tbl %>%
ggplot(
mapping = aes(
x = value
, fill = time_segment
, group = time_segment
)
) +
facet_wrap(~ time_segment) +
geom_histogram(binwidth = anomalize_long_facet_tbl$bw_value) +
theme_tq()
我收到以下错误:
Warning messages:
1: Computation failed in `stat_bin()`:
length(width) == 1 is not TRUE
所以很明显要么我的语法是错误的,要么我的理解是错误的。这种事情可以通过ggplot来完成吗?我已经设法通过常规的 hist() 循环来做到这一点:
par(mfrow = c(3,3))
for(i in 1:length(cols_to_anomalize)){
c <- cols_to_anomalize[i]
title <- str_c("Hist for: ", c %>% str_to_title())
filt_col <- str_c("anomaly_", c)
df_tmp <- df_tbl %>%
filter(!!sym(filt_col) == "No") %>%
select(contains(c), -contains("anomaly_")) %>%
pull() %>%
enframe()
bw <- optBin(df_tmp$value)
bw <- bw %>%
enframe() %>%
mutate(lag_1 = lag(value, n = 1)) %>%
mutate(lag_1 = case_when(
is.na(lag_1) ~ value
, TRUE ~ lag_1
)) %>%
mutate(lag_1_delta = value - lag_1) %>%
select(lag_1_delta) %>%
tail(1) %>%
pull()
hist(df_tmp$value, main = title, breaks = bw)
}
par(mfrow = c(1,1))
解决方案
推荐阅读
- matlab - Vec2Word 神经网络方案
- python - 过滤嵌套序列化程序 - Django REST
- reactjs - 在自定义 DetailsList onRenderCheckbox 中显示所选项目的索引
- javascript - 如何在导航栏上的活动图标之间切换边框?
- java - 有什么方法可以限制 DynamoDb 中自动生成的 hashKey 的长度
- graphql - 如何使用 NestJS GraphQL 实现 NuxtJS Apollo
- angular - 如何在同一台服务器上同时运行前端和后端?
- docker - [Airflow][kubernetes_pod_operator] TypeError:“NoneType”类型的参数不可迭代
- gitlab - 安装 gitlab - PV 边界错误,externalIP 导致错误
- string - ansbile:有条件地拆分字符串