Renk, şekil vb. İçin ek faktörleri haritalamak ve daha pürüzsüz eklemek gibi güzel özelliklerini ggplot2
kullanarak bir dağılım grafikleri matrisi çizmek mümkün müdür ggplot
?
Ben benzer bir şey hakkında düşünüyorum base
fonksiyonu pairs
.
Renk, şekil vb. İçin ek faktörleri haritalamak ve daha pürüzsüz eklemek gibi güzel özelliklerini ggplot2
kullanarak bir dağılım grafikleri matrisi çizmek mümkün müdür ggplot
?
Ben benzer bir şey hakkında düşünüyorum base
fonksiyonu pairs
.
Yanıtlar:
Plotmatrix'i denemek isteyebilirsiniz:
library(ggplot2)
data(mtcars)
plotmatrix(mtcars[,1:3])
bana göre mpg (mtcars'taki ilk sütun) bir faktör olmamalı. Kontrol etmedim ama olması için hiçbir sebep yok. Ancak bir dağılım grafiği alıyorum :)
Not: İleride başvurmak üzere, @ naught101'in bu soruya aşağıdaki başka bir yanıtta önerdiği gibi plotmatrix()
, ggpairs()
işlev GGally
paketin işleviyle değiştirilmiştir .
plotmatrix()
, ggpairs()
işlev GGally
paketin işleviyle değiştirildi .
Bunu yapmayı istemeye devam ediyorum ama olay örgüsü saçmalık. Hadley , bunun yerine GGally paketini kullanmanızı önerir . Büyük ölçüde geliştirilmiş bir çift çizimi olan bir işlevi vardır, ggpairs (veri çerçevelerinizde sürekli olmayan değişkenleri kullanmanıza izin verir). Değişken türlere bağlı olarak her karede farklı grafikler çizer:
library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))
colour
değişkenin bir faktör olması gerektiğine dikkat etmek önemlidir; Bunu anlamak için 45 dakika harcadı.
melt
ilgilendiğiniz değişkeni bir id değişkeni olarak kullanarak veri çerçevesini ve ardından diğer değişkenler tarafından faset yapabilirsiniz.
ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable)
. "Korelasyon grafiği" dediğinizde dağılım grafiklerinden bahsettiğinizi varsayıyorum, çünkü bunu başka türlü hiç duymadım.
GGally::ggpairs(iris, aes(colour = Species, alpha=0.4))
Bir ggplot
nesne elde etmek istiyorsa ( ggmatrix
durumdaki gibi değil ggpairs()
), çözüm veriyi iki kez eritmektir, sonra ggplot
fasetleme ile. parametre verildiğinde, çizilen alanı sınırlamaktan facet_wrap
daha iyi olacaktır .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')
}