2016-03-02 45 views
0

例情節:散點圖(X1,X2)由因子分組:添加一個曲線連接對應於各組中的X1的最大值的點以外,與GGPLOT2

mtcars$cyl <- as.factor(mtcars$cyl) 
p <- ggplot(data=mtcars,aes(x=mpg,y=disp,color=cyl)) 
p <- p + geom_point() 
p 

enter image description here

對於每個組(每氣缸數),mpg有最大值。我想繪製一條線,連接每個組中最多的點數爲mpg。我不知道如何做到這一點:我想我可以創建另一個數據框,只包含每一組中的mpg最大值和disp相應的值。我試着用summarizedplyr,但我不能留住對應的mpg最大值的disp值:

> foo <- mtcars %>% group_by(cyl) %>% summarize(maxmpg=max(mpg)) 
> foo 
Source: local data frame [3 x 2] 

    cyl maxmpg 
    (fctr) (dbl) 
1  4 33.9 
2  6 21.4 
3  8 19.2 

回答

1

你可以做

library(ggplot2) 
library(dplyr) 
df <- mtcars 
df$cyl <- as.factor(df$cyl) 
p <- ggplot(data=df,aes(x=mpg,y=disp,color=cyl)) 
p <- p + geom_point() 
p + geom_line(data=df %>% group_by(cyl) %>% filter(mpg==max(mpg)), color="black") 
+1

爽!有用。據我所知,'DF%>%GROUP_BY(CYL)%>%濾波器(MPG == MAX(MPG))'供給''爲geom_line' data'參數。不過,我不明白'aes(group = 1)'。它看起來像'的p + geom_line(數據= mtcars%>%GROUP_BY(CYL)%>%濾波器(MPG == MAX(MPG)),顏色= 「黑」)'給出相同的結果作爲你的。是否有任何具體的理由添加'aes(group = 1)'? – DeltaIV

+0

你是對的,我踢了它。 (以爲我記得geom_line抱怨...) – lukeA

相關問題