在ggplot2中创建散点图的矩阵(对()等价)

是否可以用ggplot2绘制散点图的矩阵,使用ggplot的很好的功能,如将其他因素映射到颜色,形状等,并添加更平滑?

我正在考虑类似于base函数pairs东西。


你可能想试试plotmatrix:

  library(ggplot2)
  data(mtcars)
  plotmatrix(mtcars[,1:3])

对我来说mpg(mtcars中的第一列)不应该是一个因素。 我没有检查过它,但没有理由为什么它应该是一个。 但是我得到一个散点图:)


注意:为了将来的参考, plotmatrix()函数已被GGally包中的ggpairs()函数替代,因为@ naught101在该问题的下面的另一个响应中提出了建议。


我一直想要这样做,但plotmatrix是废话。 哈德利建议改用GGally包装。 它有一个函数ggpairs,这是一个极大改进的配对图(允许您在数据框中使用非连续变量)。 它在每个方格中绘制不同的图,取决于变量类型:

library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))

在这里输入图像描述


如果想要得到ggplot对象(未ggmatrix如在的情况下, ggpairs()该溶液是两次熔融数据,然后ggplot用磨制。 facet_wrap在限制绘制区域方面比facet_grid好,因为提供了scales = 'free'参数。

require(ggplot2) 
require(dplyr)
require(tidyr)

gatherpairs <- function(data, ..., 
                        xkey = '.xkey', xvalue = '.xvalue',
                        ykey = '.ykey', yvalue = '.yvalue',
                        na.rm = FALSE, convert = FALSE, factor_key = FALSE) {
  vars <- quos(...)
  xkey <- enquo(xkey)
  xvalue <- enquo(xvalue)
  ykey <- enquo(ykey)
  yvalue <- enquo(yvalue)

  data %>% {
    cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars,
                 na.rm = na.rm, convert = convert, factor_key = factor_key),
          select(., !!!vars)) 
  } %>% gather(., key = !!ykey, value = !!yvalue, !!!vars,
               na.rm = na.rm, convert = convert, factor_key = factor_key)
}

iris %>% 
  gatherpairs(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) %>% {
  ggplot(., aes(x = .xvalue, y = .yvalue, color = Species)) +
      geom_point() + 
      geom_smooth(method = 'lm') +
      facet_wrap(.xkey ~ .ykey, ncol = length(unique(.$.ykey)), scales = 'free', labeller = label_both) +
      scale_color_brewer(type = 'qual')
}

在这里输入图像描述

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

上一篇: Create a matrix of scatterplots (pairs() equivalent) in ggplot2

下一篇: labels for custom diverging color gradient in ggplot