我想用ggcorplot
和做一个简单的相关性分析ggpairs
。但是,我只想将一组连续变量与另一组进行比较,而不是全部对比。让我在下面解释我的意思。
我正在使用mtcars
此示例的数据。我执行以下操作:
data(mtcars)
mtcars
summary(mtcars)
mtcars$vs <- as.character(mtcars$vs)
grDevices::pdf(file="test1.pdf", height=6, width=6)
print(
ggcorrplot::ggcorrplot(round(cor(mtcars[,1:7]), 1), p.mat = ggcorrplot::cor_pmat(mtcars[,1:7]),
hc.order=TRUE, type='lower', method = "circle")
)
grDevices::dev.off()
grDevices::pdf(file="test2.pdf", height=10, width=10)
print(
GGally::ggpairs(mtcars, columns=1:7, ggplot2::aes(colour=vs), legend = 1,
lower = list(continuous = GGally::wrap("smooth", alpha = 0.5, size=2)),
upper = list(continuous = GGally::wrap("cor", size=3.5))) +
ggplot2::theme_light() + ggplot2::theme(legend.position = "bottom")
)
grDevices::dev.off()
这会产生以下图:
但是,我不希望所有变量都针对所有变量,我真正想要的是比较变量mpg
, cyl
, disp
(hp
在 x 轴上)与变量drat
, wt
, qsec
(在 y 轴上)。
理想情况下,我们不会裁剪图,而是只进行适当的计算以节省时间。事实上,想象我的起始数据被分隔在 2 个输入数据帧中,具有不同的连续变量(但相同的行名和分类变量,在这种情况下使用vs
),所以更像这样:
mydata1 <- mtcars[,c(8,1:4)]
mydata2 <- mtcars[,c(8,5:7)]
> head(mydata1)
vs mpg cyl disp hp
Mazda RX4 0 21.0 6 160 110
Mazda RX4 Wag 0 21.0 6 160 110
Datsun 710 1 22.8 4 108 93
Hornet 4 Drive 1 21.4 6 258 110
Hornet Sportabout 0 18.7 8 360 175
Valiant 1 18.1 6 225 105
> head(mydata2)
vs drat wt qsec
Mazda RX4 0 3.90 2.620 16.46
Mazda RX4 Wag 0 3.90 2.875 17.02
Datsun 710 1 3.85 2.320 18.61
Hornet 4 Drive 1 3.08 3.215 19.44
Hornet Sportabout 0 3.15 3.440 17.02
Valiant 1 2.76 3.460 20.22
知道如何解决这个问题吗?不确定ggcorrplot
并且ggpairs
是最好的,但如果可能的话,我会坚持使用它们,只是因为我更熟悉,或者至少是产生类似ggplot2
输出的东西。谢谢!