我有以下 Dataframe 和代码:
#example data
Correlation_task_persistence <- c("-0.28", "-0.24", "-0.29", "-0.18", "-0.18", "-0.09", "0.01", "0.12")
Biv_A_task_persistence <- c("55%", "60%", "63%", "66%", "67%", "71%", "100%", "55%")
Biv_E_task_persistence <- c("45%", "40%", "37%", "34%", "33%", "29%", "0%", "45%")
Correlation_activity <- c("0.24", "0.06", NA, "0.26", "0.10", "0.05", "0.03", "0.01")
Biv_A_activity <- c("72%", "54%", NA, "70%", "65%", "70%", "50%", "100%")
Biv_E_activity <- c("28%","46%", NA, "30", "35%", "30%", "50%", "0%")
age <- c("slope", "intercept", "36", "30", "24", "18", "12", "6")
df.new <- data.frame(Correlation_task_persistence, Biv_A_task_persistence,Biv_E_task_persistence, Correlation_activity, Biv_A_activity, Biv_E_activity, age )
#code to produce figure
df.new %>%
mutate(across(Correlation_task_persistence:Biv_E_activity,
~if_else(as.numeric(gsub("%", "", .x)) > 1,
as.numeric(gsub("%", "", .x, fixed = TRUE))/100,
as.numeric(.x)))) %>%
pivot_longer(-c(age, contains("Correlation"))) %>%
mutate(Correlation = if_else(grepl("task", name),
Correlation_task_persistence,
Correlation_activity),
final_value = Correlation * value,
name = gsub("_task", "", name)) %>%
tidyr::extract("name", c("var","group"), regex = "(.*)_([^_]+)$") %>%
group_by(age, group) %>%
mutate(label = scales::percent(final_value / sum(final_value))) %>%
ungroup() %>%
mutate(age = factor(age,
levels = c("0", "6", "12", "18", "24", "30", "36", "slope", "intercept"),
ordered = TRUE)) %>%
ggplot(aes(x = age, y = final_value, fill = var)) +
geom_col() +
geom_text(aes(label = Correlation, group = age),
stat = 'summary', fun = function(x) sum(x) + 0.01 * sign(x), size = 3) +
geom_text(aes(label = label), size = 3, position = position_stack(vjust = 0.5)) +
scale_fill_grey(start = 0.475, end = 0.8, na.value = "red") +
labs(y = "Correlation") +
facet_wrap(~group)
生成此图形:
我想修改我的代码完全删除“年龄36”(由于NA,无条形图)来自“活性”图(左手图),因此仅显示6、12、18、24、30岁(即“年龄30”和“斜率”之间不应该有差距)我想这样做,而不会失去“年龄36”酒吧的情节为坚持,因为它显然有数据。会很感激任何帮助。
1条答案
按热度按时间js81xvg61#
在将数据发送到
ggplot
之前,过滤掉NA值然后在小平面的x轴上使用自由缩放