为了比较多个医学变量的结果与范围的非常大的差异,我想创建一个类似下面的散点图
每个面板水平和垂直相同的轴,
固定的方面,使斜率= 1线穿过角落.
-
library(ggplot2)
set.seed(11)
d = rbind(
  data.frame(what = "a", v1 = rnorm(20)+0.2, v2 = rnorm(20)),
  data.frame(what = "b", v1 = rnorm(20, 100, 10)+20, v2 = rnorm(20, 100,10)))
ggplot(d, aes(x = v1, y = v2 )) +
  geom_point() +
  geom_abline(slope = 1) +
  facet_wrap(~what, scales = "free") +
  theme(aspect.ratio = 1) +
  coord_fixed(ratio = 1) + # No effect?
  stat_ellipse()
我知道很难通过预先计算的限制来获得这个. 在ggplot2中使用facet_wrap和scales ="free"设置单个轴限制
如果您以 x 和 y 反转的方式无形地绘制所有内容,则每个面将具有相同的 x 和 y 轴。
library(ggplot2)
set.seed(11)
d = rbind(
  data.frame(what = "a", v1 = rnorm(20)+0.2, v2 = rnorm(20)),
  data.frame(what = "b", v1 = rnorm(20, 100, 10)+20, v2 = rnorm(20, 100,10)))
ggplot(d ) +
  geom_point(aes(x = v1, y = v2 )) +
  geom_blank(aes(x = v2, y = v1 )) +
  geom_abline(slope = 1) +
  facet_wrap(~what, scales = "free") +
  stat_ellipse(aes(x = v1, y = v2 )) +
  stat_ellipse(aes(x = v2, y = v1 ), alpha=0)