问题似乎是 x 轴和 y 轴的比例。如果您将它们重新调整为均值和单位方差均为零,则该图有效。因此,您可以做的一件事是绘制重新缩放的值,但将标签转换回原始比例。为此,您必须执行以下操作:
制作数据:
df<- data.frame(
Day=(1:6),
Var1=c(172,186,191,201,205,208),
Var2= c(109,483,64010,161992,801775,2505264), A=c(10,2,3,4.5,16.5,39.6), B=c(10,3,0,1.4,4.8,11.9), C=c(2,5,2,0.1,0.5,1.2), D=c(0,0,0,0,0.1,0.2))
重新调整变量
df <- df %>%
mutate(x = c(scale(Var1)),
y = c(scale(Var2)))
找到将重新缩放的值转换回其原始值的线性映射。然后,您可以使用模型中的系数来创建一个函数,将重新缩放的值转换回原始值。
m1 <- lm(Var1 ~ x, data=df)
m2 <- lm(Var2 ~ y, data=df)
trans_x <- function(x)round(coef(m1)[1] + coef(m1)[2]*x)
trans_y <- function(x)round(coef(m2)[1] + coef(m2)[2]*x)
绘制绘图,使用转换函数作为函数中标签的scale_[xy]_continuous()
调用
ggplot() +
geom_scatterpie(data=df, aes(x = x, y=y), cols = c("A", "B", "C", "D")) +
scale_x_continuous(labels = trans_x) +
scale_y_continuous(labels = trans_y) +
coord_fixed()
可能有比这更简单的方法,但对我来说并不明显。