ggplot 辅助 y 轴使用 sec_axis 显示 z 分数
ggplot secondary y axes showing z scores using sec_axis
ggplot2 现在允许添加辅助 y 轴,如果它是主轴的一对一变换。
对于我的图表,我想在左侧 y 轴上绘制原始单位,在右侧 y 轴上绘制 z 分数,但我在实际操作中遇到了问题。
documentation 建议使用 sec_axis() 函数添加此辅助轴,例如
scale_y_continuous(sec.axis = sec_axis(~.+10))
创建比第一个高 10 个单位的第二个 y 轴。
Z 分数 can be created in R using the scale() function。所以我假设我可以做这样的事情来获得第二个显示 z 分数的 y 轴:
scale_y_continuous(sec.axis = sec_axis(scale(~.)))
然而,这 returns 一个 "invalid first argument" 错误。
有没有人知道如何进行这项工作?
您可以使用 z 得分转换公式。这很好用:
library(tidyverse)
library(scales)
df <- data.frame(val = c(1:30), var = rnorm(30, 10,2))
p <- ggplot() + geom_line(data = df, aes( x = val, y = var))
p <- p + scale_y_continuous("variable", sec.axis = sec_axis(trans = ~./ sd(df$var) - mean(df$var)/ sd(df$var), "standarized variable"))
p
或:
p + scale_y_continuous("variable", sec.axis = sec_axis(~ scale(.), "standarized variable"))
ggplot2 现在允许添加辅助 y 轴,如果它是主轴的一对一变换。
对于我的图表,我想在左侧 y 轴上绘制原始单位,在右侧 y 轴上绘制 z 分数,但我在实际操作中遇到了问题。
documentation 建议使用 sec_axis() 函数添加此辅助轴,例如
scale_y_continuous(sec.axis = sec_axis(~.+10))
创建比第一个高 10 个单位的第二个 y 轴。
Z 分数 can be created in R using the scale() function。所以我假设我可以做这样的事情来获得第二个显示 z 分数的 y 轴:
scale_y_continuous(sec.axis = sec_axis(scale(~.)))
然而,这 returns 一个 "invalid first argument" 错误。
有没有人知道如何进行这项工作?
您可以使用 z 得分转换公式。这很好用:
library(tidyverse)
library(scales)
df <- data.frame(val = c(1:30), var = rnorm(30, 10,2))
p <- ggplot() + geom_line(data = df, aes( x = val, y = var))
p <- p + scale_y_continuous("variable", sec.axis = sec_axis(trans = ~./ sd(df$var) - mean(df$var)/ sd(df$var), "standarized variable"))
p
或:
p + scale_y_continuous("variable", sec.axis = sec_axis(~ scale(.), "standarized variable"))