2013-05-15 86 views
13

在GGPLOT2,下面從here地塊採取命令p <- qplot(wt, mpg, data=mtcars, colour=factor(cyl))根據因子與每個點的散點圖着色GGPLOT2顏色geom_point通過因子但geom_smooth基於所有數據

我想與一個geom_smooth,以適應所有的數據而不管的因素,但根據因素保持各個點的顏色。 p + geom_smooth(method="lm")對每個因素都做了線性擬合。我該怎麼做呢?

回答

20

您可以通過從「qplot」包裝函數中退出並直接使用「ggplot」和幾何函數,輕鬆完成此操作。

ggplot(mtcars, aes(x=wt, y=mpg)) + 
    geom_point(aes(colour=factor(cyl))) + 
    geom_smooth(method="lm") 

demo chart

步驟1:設置你的最初的 'ggplot' 設置。這些是您想要作爲幾何函數的默認設置。

ggplot(mtcars, aes(x=wt, y=mpg)) 

在這種情況下,我們使用的是「mtcars」數據「重量」分配到分配給y軸與x軸和「MPG」與所有幾何形狀。通過在開始時指定這些參數,我們可以減少在複製粘貼到幾何函數中時發生混亂的風險。

第2步:繪製點幾何圖形,使用'cyl'的因子着色點。這就是原來的'qplot'函數所做的,但我們更明確地指定它。

geom_point(aes(colour=factor(cyl))) 

步驟3:繪製平滑的線性模型。這正是OP之前所寫的內容,但現在着色美學不再是默認設計的一部分,該模型按預期繪製。

geom_smooth(method="lm") 

把它連同+等瞧!

僅供參考:你可以很容易地在每層明確做到這一點,就像這樣:

ggplot() + 
    geom_point(data=mtcars, aes(x=wt, y=mpg, colour=factor(cyl))) + 
    geom_smooth(data=mtcars, method="lm", aes(x=wt, y=mpg)) 
5

在我看來,如果你開始使用ggplot()函數而不是qplot,你會發現ggplot更容易。美學的控制更有意義。在這種情況下,你只要建立自己的基地:

p <- ggplot(mtcars, aes(wt, mpg)) 

然後建立在頂部的兩個geom S:

p + geom_point(aes(colour = factor(cyl))) + 
    geom_smooth(method = "lm") 

enter image description here

讓我知道,如果這是你沒有什麼後。

+0

感謝您的答覆。我使用ggplot()函數而不是qplot。只有鏈接網頁上的例子才能很好地說明我的問題背景。這裏讓我感到困惑的是我現在瞭解的不同層次 – moadeep

+0

有時我會提交一個答案,看到有人寫下了完全相同的答案,並且想:「也許我應該等一會兒再回答......」 – Dinre

+0

或者只是更快:-) – alexwhan

1

我從@alexwhan和@Dinre的ggplot以前的答案同意()+ geom_point(...)+ ...爲解決這個問題,最好的辦法

但是,如果你只是想修改您的解決方案嘗試

p + geom_smooth(method = 'lm', aes(colour = NA), colour = 'magenta') 
相關問題