为了比较多个医学变量的结果与范围的非常大的差异,我想创建一个类似下面的散点图
每个面板水平和垂直相同的轴,
固定的方面,使斜率= 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()
Run Code Online (Sandbox Code Playgroud)
我知道很难通过预先计算的限制来获得这个. 在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)
Run Code Online (Sandbox Code Playgroud)