2017-04-05 24 views
2

ggplot2現在允許添加次y軸,如果它是主軸的一對一轉換。ggplot次y軸使用sec_axis顯示z分數

對於我的圖形,我想繪製左y軸上的原始單位和右y軸上的z分數,但是我在實踐中遇到了困難。

documentation的暗示該二次軸使用sec_axis()函數中加入例如,

scale_y_continuous(sec.axis = sec_axis(~.+10)) 

創建第二y軸高於第一10個單位。

Z分數can be created in R using the scale() function。所以,我認爲我可以做這樣的事情來獲得第二y軸顯示z分數:

scale_y_continuous(sec.axis = sec_axis(scale(~.))) 

然而,這會返回一個「無效的第一個參數」的錯誤。

有沒有人有任何想法如何使這項工作?

+0

我認爲這是'〜'規模(。) – aosmith

回答

0

您可以使用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")) 

enter image description here