2016-09-21 63 views
0

我想通過使用geom_smooth我的繪圖數據添加一條線,但我遇到了困難。ggplot2 geom_smooth線沒有顯示在我的圖上

這裏是我的代碼:

plot.BG = ggplot(data) + geom_point(aes(x=Mass_LT, y=BG, colour=factor(Temp.f))) 
plot.BG + geom_smooth(method="lm") 

BG 
#[1] 79.56304 118.63903 84.03655 95.02984 67.90585 81.39920 74.73497 95.50199 
#[9] 94.51260 88.08051 110.78937 96.89154 73.96888 74.04067 70.19670 69.80033 
#[17] 64.49329 76.58780 98.73740 107.75642 71.05849 98.45971 101.67881 109.35420 
#[25] 79.32484 69.71360 85.94306 101.25704 87.85497 119.07206 85.72013 98.91010 
#[33] 95.27523 84.89955 93.42660 112.82913 121.77451 84.56991 67.66107 102.73335 

Mass_LT 
#[1] 0.000 6.154 0.000 2.128 3.169 5.986 1.916 0.000 5.956 0.566 0.000 0.000 0.530 4.813 
#[15] 2.943 2.645 0.605 2.747 0.726 0.000 0.479 0.000 2.195 0.000 0.000 2.636 3.057 2.777 
#[29] 1.909 4.657 0.000 0.000 0.000 0.000 3.203 0.000 0.000 6.157 0.635 0.000 

sort(Mass_LT) 
#[1] 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
#[15] 0.000 0.000 0.479 0.530 0.566 0.605 0.635 0.726 1.909 1.916 2.128 2.195 2.636 2.645 
#[29] 2.747 2.777 2.943 3.057 3.169 3.203 4.657 4.813 5.956 5.986 6.154 6.157 

Temp.f是2級的一個因素,圖表和點出來罰款,但沒有一條線,不能完全弄清楚爲什麼。任何幫助將不勝感激。

+1

因爲你沒有用於除'geom_point'層以外的層中定義的美觀性。如果將'aes()'規範移到'ggplot()'調用,而不是'geom_point()'調用,那麼它們將被所有後續層繼承。 – Gregor

回答

2

ggplot()中定義的審美映射由後續圖層繼承。但是,如果在圖層中定義的映射(例如,geom_point()內)僅在該圖層的本地。既然您想要geom_pointgeom_smooth圖層都使用相同的映射,請將它們放在最初的ggplot()調用中,它們將由兩者繼承。

再現地使用mtcars

# only the points are displayed 
ggplot(mtcars) + 
    geom_point(aes(x = hp, y = mpg, color = factor(cyl)) + 
    geom_smooth() 

# you could respecify for the geom smooth, but that's repetitive 
ggplot(mtcars) + 
    geom_point(aes(x = hp, y = mpg, color = factor(cyl)) + 
    geom_smooth(aes(x = hp, y = mpg, color = factor(cyl)) 

# put the mapping up front for all layers to inherit it 
ggplot(mtcars, aes(x = hp, y = mpg, color = factor(cyl)) + 
    geom_point() + 
    geom_smooth()