2017-02-16 48 views
0

請考慮下列R-腳本(從here取出並略作修改):GGPLOT2:如何斷行添加到水平傳說

require(ggplot2) 

x <- 1:10 
y <- jitter(x^2) 

DF <- data.frame(x, y) 

p <- ggplot(DF, aes(x = x, y = y)) + geom_point() + 
    stat_smooth(method = 'lm', aes(colour = 'linear')) + 
    stat_smooth(method = 'lm', formula = y ~ poly(x,2), 
       aes(colour = 'polynomial')) + 
    stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, 
       aes(colour = 'logarithmic')) + 
    stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), 
       aes(colour = 'Exponential')) + 
    theme(legend.position = "top") 

p <- p + guides(guide_legend(ncol=2,nrow=2,byrow=TRUE)) 


p 

傳說是在圖的頂部顯示。我想把這個傳說分成兩行,每行有兩個鍵。這可能嗎?

請注意,你可能會看到,我已經嘗試過

p+guides(guide_legend(ncol=2,nrow=2,byrow=TRUE)) 

的建議herehere,但它並沒有爲我工作。這個建議基本上顯示了線性和多項式模型的數據和圖例,並完全隱藏了對數和指數模型。

+1

您需要指定哪個圖例,在本例中爲'colour'圖例:'guides(color = guide_legend(ncol = 2,nrow = 2,byrow = TRUE))'。然而,當我運行你的代碼時,'nls'模型的'stat_smooth'失敗,所以創建了圖例第二行的空間,但實際上並沒有爲'nls'模型渲染圖例框。 – eipi10

+0

@ eipi10這真的有用;謝謝,但是如果我有一個奇數的鍵,並且我希望圖例的每一行水平居中對齊。這可能嗎? – user8420488483439

回答

0

正如eipi10解釋的,

需要指定說明,在這種情況下,顏色圖例:guides(colour=guide_legend(ncol=2,nrow=2,byrow=TRUE)).

爲了澄清,審美在限定各行的colour。如果使用fill,則該行可能是guides(fill=guide_legend(ncol=2,nrow=2,byrow=TRUE))