8

我有以下代码:

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)

它产生这个:

在此处输入图像描述

如何添加密度着色使其看起来像这样:

在此处输入图像描述

4

1 回答 1

6

使用如何在 ggplot 中重现 smoothScatter 的异常值绘图中的想法?, R - 平滑颜色并将图例添加到散点图中,以及如何使用 GGally::ggpairs 中的 loess 方法使用 wrap 函数,您可以定义自己的函数以传递给 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))

编辑

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

您可以设置diagonal 和upperarguments。因此,要添加直方图(假设您的意思是geom_histogram),您可以使用diag=list(continuous=wrap("barDiag", binwidth=100))并完全删除相关性upper=list(continuous="blank")。如果您想实际删除文本*corr:*,则需要定义一个新函数 - 请参阅Change colours in ggpairs now that params is deprecated 中cor_fun的函数。

所以你的情节变成

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

在此处输入图像描述

编辑

来自评论:你如何像在 OP 中那样为对角直方图着色?

要着色,只需将相关参数添加到barDiag函数中,在本例中为fillcolour。那么diag将是

diag=list(continuous=wrap("barDiag", binwidth=100, fill="brown", col="black")) 

fill给出主要颜色,并col给出颜色来勾勒条形)

于 2017-07-07T02:19:23.193 回答