使用ggpairs创建这个图

我在Shiny应用程序中创建了一些代码,可以生成下面的第一个图。 正如你所看到的,字体大小随着相关系数的大小而变化。 我想用ggpairs(GGally)或ggplot2来产生类似的东西。 下面的第二张图片是用下面的代码生成的:

library(GGally)
ggpairs(df, 
  upper = list(params = c(size = 10)),
  lower = list(continuous = "smooth", params = c(method = "loess", fill = "blue"))
)

正如您所看到的,相关字体的大小可以使用大小进行调整,但是当我设置大小的矢量时,仅使用第一个值。 我还想删除'Corr:'并添加一个重要指标。 使用颜色作为相关系数的符号也很好。 在较低的情况下, methodfill不能smooth连接。 关于如何让第二个情节捕获第一个更多功能的任何建议都会很棒。

Anscombe的数据:

df <- structure(list(y1 = c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 
4.26, 10.84, 4.82, 5.68), x1 = c(10L, 8L, 13L, 9L, 11L, 14L, 
6L, 4L, 12L, 7L, 5L), y2 = c(9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 
6.13, 3.1, 9.13, 7.26, 4.74), x2 = c(10L, 8L, 13L, 9L, 11L, 14L, 
6L, 4L, 12L, 7L, 5L), y3 = c(7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 
6.08, 5.39, 8.15, 6.42, 5.73), x3 = c(10L, 8L, 13L, 9L, 11L, 
14L, 6L, 4L, 12L, 7L, 5L)), .Names = c("y1", "x1", "y2", "x2", 
"y3", "x3"), class = "data.frame", row.names = c(NA, -11L))

相关图使用对

# based mostly on http://gallery.r-enthusiasts.com/RGraphGallery.php?graph=137
panel.plot <- function(x, y) {
    usr <- par("usr"); on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    ct <- cor.test(x,y)
    sig <- symnum(ct$p.value, corr = FALSE, na = FALSE,
                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
                  symbols = c("***", "**", "*", ".", " "))
    r <- ct$estimate
    rt <- format(r, digits=2)[1]
    cex <- 0.5/strwidth(rt)

    text(.5, .5, rt, cex=cex * abs(r))
    text(.8, .8, sig, cex=cex, col='blue')
}
panel.smooth <- function (x, y) {
      points(x, y)
      abline(lm(y~x), col="red")
      lines(stats::lowess(y~x), col="blue")
}
pairs(df, lower.panel=panel.smooth, upper.panel=panel.plot)

使用ggpairs的相关图


编辑为GGally 1.0.1

由于params现在已被弃用,请使用如下所示的wrap

ggpairs(df[, 1:2], 
        upper = list(continuous = wrap("cor", size = 10)), 
        lower = list(continuous = "smooth"))

在这里输入图像描述

原始答案

通过参数列表并不总是可以定制复杂的绘图。 这很自然:有太多的参数需要记住。 所以唯一可靠的选择是修改源代码。 当项目在github上托管时,这特别令人愉快。

这是一个简单的修改,首先在分叉回购中进行。 更新代码并生成下面图的最简单方法是将函数ggally_cor复制并粘贴到全局环境中,然后覆盖GGally命名空间中的相同函数:

# ggally_cor <- <...>
assignInNamespace("ggally_cor", ggally_cor, "GGally")
ggpairs(df[, 1:2], 
        upper = list(params = c(size = 10)), 
        lower = list(continuous = "smooth"))

我删除了文字标签并添加了重要性指标。 但是,修改颜色和大小并不容易,因为它们被映射得更早。 我仍然在想,但是你明白了,可以继续进行更多的定制。

编辑:我已经更新了代码,看到我最近的提交。 它现在将标签的大小映射到相关性的绝对值。 如果你想要不同的颜色,你可以做类似的事情,但我认为这可能不是一个好主意。

在这里输入图像描述

链接地址: http://www.djcxy.com/p/5217.html

上一篇: use ggpairs to create this plot

下一篇: R: saving ggplot2 plots in a list