我在数据上使用了scale()函数,以避免在进行混合模型时产生高相关性。现在,我希望原始值出现在绘图中。所以我用x * attr(x, 'scaled:scale') + attr(x, 'scaled:center')
反转了缩放比例并将这些值放在我用来绘制的数据框的新列中。举例来说,我的数据现在看起来像这样,其中x是真实值,而x.s是缩放后的值:
x <- sample(x=1:100, size = 50)
y <- sample(x=1:100, size = 50)
df <- as.data.frame(cbind(x,y))
df$x.s <- scale(df$x)
我现在想用ggplot绘制此图,但在x轴上显示x的值,而不是x.s的缩放值,所以我执行了以下操作:
ggplot(df, aes(x = x.s, y = y))+
geom_point()+
scale_x_continuous(labels = df$x, breaks = df$x.s)+
labs(x = "Canopy openness [%]", y = "Rarefied richness") +
theme_bw()
到目前为止,该方法仍然有效,输出看起来像这样:
我现在的问题是,我希望x轴上的刻度线均匀分布,这通常用breaks=seq(0,100,10)
完成,但是已经定义了中断以避免错误Error in f(..., self = self) : Breaks and labels are different lengths
,现在我不知道该如何处理这样做,将不胜感激!
如果我在x轴上使用x,那么在实际数据集中,我对CI的预测回归将不再适用。这是我的数据集1中的图,具有比例值(x.s):
和2:如果我在x轴上使用x而不是x.s
x
和x.s
之间存在一对一的线性映射关系,因此,解决此问题的一种方法是在x
的比例尺中指定所需的标签,并在x.s
]的比例尺:
ggplot(df, aes(x = x.s, y = y))+
geom_point()+
scale_x_continuous(labels = seq(0, 100, 10),
breaks = predict(lm(x.s ~ x, data = df),
newdata = data.frame(x = seq(0, 100, 10)))) +
labs(x = "Canopy openness [%]", y = "Rarefied richness") +
theme_bw()