在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