Renk, şekil vb. İçin ek faktörleri haritalamak ve daha pürüzsüz eklemek gibi güzel özelliklerini ggplot2kullanarak bir dağılım grafikleri matrisi çizmek mümkün müdür ggplot?
Ben benzer bir şey hakkında düşünüyorum basefonksiyonu pairs.
Renk, şekil vb. İçin ek faktörleri haritalamak ve daha pürüzsüz eklemek gibi güzel özelliklerini ggplot2kullanarak bir dağılım grafikleri matrisi çizmek mümkün müdür ggplot?
Ben benzer bir şey hakkında düşünüyorum basefonksiyonu 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 GGallypaketin işleviyle değiştirilmiştir .
plotmatrix(), ggpairs()işlev GGallypaketin 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))

colourdeğişkenin bir faktör olması gerektiğine dikkat etmek önemlidir; Bunu anlamak için 45 dakika harcadı.
meltilgilendiğ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 ggplotnesne elde etmek istiyorsa ( ggmatrixdurumdaki gibi değil ggpairs()), çözüm veriyi iki kez eritmektir, sonra ggplotfasetleme ile. parametre verildiğinde, çizilen alanı sınırlamaktan facet_wrapdaha iyi olacaktır .facet_gridscales = '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')
}