Answers:
您可能想尝试一下plotmatrix:
library(ggplot2)
data(mtcars)
plotmatrix(mtcars[,1:3])
对我而言,mpg(mtcars的第一列)不应成为一个因素。我没有检查它,但是没有理由为什么它应该是一个。但是我得到了一个散点图:)
注意:该plotmatrix()
函数已由软件包中的ggpairs()
函数替换,以供将来参考,GGally
如@ naught101 在下面对该问题的另一个答复中建议的那样。
plotmatrix()
函数已由包中的ggpairs()
函数替换,GGally
如@ naught101在对该问题的另一种回答中所建议的。
我一直想这样做,但plotmatrix很烂。Hadley 建议改用GGally软件包。它具有ggpairs函数,这是一个大大改进的对图(让您在数据帧中使用非连续变量)。它根据变量类型在每个正方形中绘制不同的图:
library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))
colour
变量都必须是一个因素。花了45分钟弄清楚那一个。
melt
将您感兴趣的变量用作id变量,然后再由其他变量作为方面。
ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable)
。我假设您所说的“相关图”是在谈论散点图,因为我从未听说过。
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')
}