如何在成对相关散点图中包括密度着色

pdu*_*ois 7 r ggplot2 ggally tidyverse

我有以下代码:

library(GGally)
library(nycflights13)
library(tidyverse)

dat <- nycflights13::flights %>% 
       select(dep_time, sched_dep_time, dep_delay,  arr_time, sched_arr_time, arr_delay)  %>% 
       sample_frac(0.01)
dat
ggpairs(dat)
Run Code Online (Sandbox Code Playgroud)

它产生了这个:

在此输入图像描述

如何添加密度着色,使其如下所示:

在此输入图像描述

use*_*650 6

使用如何在ggplot中重现smoothScatter的异常值绘图中的想法?,R - 平滑颜色并向散点图添加图例,以及如何使用包装函数在GGally :: ggpairs中使用loess方法,您可以定义自己的函数以传递给ggpairs.

my_fn <- function(data, mapping, ...){
      p <- ggplot(data = data, mapping = mapping) + 
        stat_density2d(aes(fill=..density..), geom="tile", contour = FALSE) +
        scale_fill_gradientn(colours=rainbow(100))
      p
}

ggpairs(dat, lower=list(continuous=my_fn))
Run Code Online (Sandbox Code Playgroud)

编辑

来自评论:如何在对角线中添加直方图并删除相关值中的"Corr:"?

您可以设置diagonal和upper参数.因此,要添加直方图(假设您的意思geom_histogram),您可以使用diag=list(continuous=wrap("barDiag", binwidth=100))和删除相关性完全使用upper=list(continuous="blank").如果你想真正删除文本*corr:*,你需要定义一个新函数 - 请参阅ggpairscor_fun更改颜色的函数,现在不推荐使用params.

所以你的情节变成了

ggpairs(dat, lower=list(continuous=my_fn),
        diag=list(continuous=wrap("barDiag", binwidth=100)),
        upper=list(continuous=wrap(cor_fun, sz=10, stars=FALSE))
        )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑

来自评论:你如何为OP中的对角线直方图着色?

颜色只需添加相关参数的barDiag功能,在这种情况下fillcolour.那diag就是

diag=list(continuous=wrap("barDiag", binwidth=100, fill="brown", col="black")) 
Run Code Online (Sandbox Code Playgroud)

(fill给出主色,并col给出勾勒出条纹的颜色)