将多个系列作为一个系列的 Z 得分图 plot/histogram
Z-Score Plot of multiple series as one plot/histogram
我正在尝试制作 Zscores 图表,如下所示。
我的数据基于 NetLogo 实验,并且重复了相同变量的列(比如 10 次)。它由不同的场景组成。我正在尝试制作一个具有代表性的图表来理解数据。我正在一点一点地尝试。对于下面给出的数据,可以说适应场景;
df <- data.frame(Biomass = c(1,2,3,4,5,6,7,8,9,10),
Livestock = c(2,4,6,8,10,12,14,16,18,20),
Totalpeople = c(10,20,30,40,50,60,70,80,90,100)
)
我想 Zscore 将是我们从数据中获得的一系列。如何制作上述类型的图表?
我正在使用这些代码;
df %>% (.funs = function(x) {(x - mean(x)) / sd(x)}) %>%
ggplot(aes(x = Scenario, y= value, fill = name)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")
并给出错误
is.data.frame(x) 中的错误:
'list' 无法强制对象键入 'double'
请帮忙!
您没有在 MWE 中为我们提供 Scenario
的值,因此不清楚您是否要标准化 within 或 between场景。此代码在场景内标准化:也就是说,它计算每一列的效果大小。
一如既往,它有助于在开始之前整理数据:这就是调用 pivot_longer
的效果。显然,当你有自己的 Scenario
时,你可以删除 add_column
调用。
df %>%
pivot_longer(everything(), values_to="value") %>%
add_column(Scenario="ADAPTATION") %>%
group_by(Scenario, name) %>%
summarise(value=(value - mean(value)/sd(value)), .groups="drop") %>%
ggplot(aes(x = Scenario, y= value, fill = name)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")
您正在寻找这样的解决方案吗?刚刚像 Limey 一样创建了自己的 Scenario
。
df %>%
as_tibble() %>%
add_column(Scenario_TarJae = as.factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C", "C"))) %>%
pivot_longer(
cols = c(1:3),
names_to = "group",
values_to = "value"
) %>%
group_by(Scenario_TarJae) %>%
mutate(z_score = scale(value)) %>%
ggplot(aes(x = Scenario_TarJae, y= z_score[,1], fill = group)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")
我正在尝试制作 Zscores 图表,如下所示。
我的数据基于 NetLogo 实验,并且重复了相同变量的列(比如 10 次)。它由不同的场景组成。我正在尝试制作一个具有代表性的图表来理解数据。我正在一点一点地尝试。对于下面给出的数据,可以说适应场景;
df <- data.frame(Biomass = c(1,2,3,4,5,6,7,8,9,10),
Livestock = c(2,4,6,8,10,12,14,16,18,20),
Totalpeople = c(10,20,30,40,50,60,70,80,90,100)
)
我想 Zscore 将是我们从数据中获得的一系列。如何制作上述类型的图表? 我正在使用这些代码;
df %>% (.funs = function(x) {(x - mean(x)) / sd(x)}) %>%
ggplot(aes(x = Scenario, y= value, fill = name)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")
并给出错误 is.data.frame(x) 中的错误: 'list' 无法强制对象键入 'double' 请帮忙!
您没有在 MWE 中为我们提供 Scenario
的值,因此不清楚您是否要标准化 within 或 between场景。此代码在场景内标准化:也就是说,它计算每一列的效果大小。
一如既往,它有助于在开始之前整理数据:这就是调用 pivot_longer
的效果。显然,当你有自己的 Scenario
时,你可以删除 add_column
调用。
df %>%
pivot_longer(everything(), values_to="value") %>%
add_column(Scenario="ADAPTATION") %>%
group_by(Scenario, name) %>%
summarise(value=(value - mean(value)/sd(value)), .groups="drop") %>%
ggplot(aes(x = Scenario, y= value, fill = name)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")
您正在寻找这样的解决方案吗?刚刚像 Limey 一样创建了自己的 Scenario
。
df %>%
as_tibble() %>%
add_column(Scenario_TarJae = as.factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C", "C"))) %>%
pivot_longer(
cols = c(1:3),
names_to = "group",
values_to = "value"
) %>%
group_by(Scenario_TarJae) %>%
mutate(z_score = scale(value)) %>%
ggplot(aes(x = Scenario_TarJae, y= z_score[,1], fill = group)) +
geom_col(colour = 'black', position = position_dodge()) +
theme_classic() +
scale_fill_viridis_d() + ylab("Z-scores")