我有一个我想绘制的数据框,由以下代码生成。
df_rn1 = as.data.frame(cbind(rnorm(40, 1, 1), rep("rn1", 40)))
df_rn2 = as.data.frame(cbind(rnorm(40, 10, 1), rep("rn2", 40)))
df_rn3 = as.data.frame(cbind(rnorm(40, 100, 1), rep("rn3", 40)))
df_test = rbind(df_rn1, df_rn2, df_rn3)
colnames(df_test) <- c("value", "type")
我想绘制由相应的第一个观察s.t标准化的数据帧。他们缩放得当。但是,我没有比这更进一步:
ggplot(aes(x = rep(1:40, 3), y=as.numeric(as.character(value)), color = type), data = df_test) +
geom_line()
是否可以直接在ggplot代码中按类型进行规范化?
THX
答案 0 :(得分:2)
这个怎么样?
library(tidyverse);
df_test %>%
group_by(type) %>%
mutate(
value = as.numeric(as.character(value)),
value.scaled = (value - mean(value)) / sd(value),
idx = 1:n()) %>%
ggplot(aes(idx, value.scaled, colour = type)) + geom_line()
请注意,值在type
中缩放;不确定你要追求什么,对于全球扩展,请参阅@ManishSaraswat的回答。
答案 1 :(得分:1)