2016-09-28 26 views
0

我想用ggplot繪製一個散點圖,其中geom_smooth()以45度角與我的數據中心交叉,而不是自動繪製。如何在散點圖中繪製直線的交叉中心數據?

正如它在這裏顯示的那樣,geom_smooth()有很小的斜率,我改變了不同的方法lm,auto等,但沒有區別。

geom_smooth(color = "black", alpha = 0.5, method = "lm", se = F) 

我該如何畫出正好穿過粉紅色圓點中間的線?

enter image description here

+0

你想要只穿過粉紅色的點中間的線?現在它看起來像geom_smooth正在查看所有的數據(藍色和粉紅色)也許嘗試修剪你傳遞給geom smooth的數據參數只有粉紅色的組 – Nate

+0

是的,它跨所有數據,我只是改變了顏色函數基於價值上下,但它不想削減數據,因爲我需要2個其他組。 – user3616494

+0

對,您不必丟失任何數據,只需調整您傳遞給geom_smooth的數據即可。像這樣:'geom_smooth(data = filter(df,value ==「up」),...)'如果你添加一個dput(your_data)它會更容易幫助 – Nate

回答

1

你要這樣呢?

geom_abline(intercept = 0, slope = 1) 

此無線本地環路繪製一個45度角,通過0

進了線我認爲是geom_smooth計算迴歸FR的所有點。嘗試刪除所有color參數以獲得平滑的組。你可以檢查不同的地塊

a <- data.frame(x = c(1:10,2:11),y = c(2:11,1:10), label = c(rep("a",10),rep("b",10))) 

ggplot(a, aes(x,y)) + geom_point(aes(color = label)) + geom_smooth(aes(color = label)) 
ggplot(a, aes(x,y)) + geom_point(aes(color = label)) + geom_smooth(color="black") 
+0

感謝它的工作,'geom_abline(截距= 0,斜率= 1)'工作正常,但它從一個角落到另一個,有什麼辦法讓這條線開始和結束像'geom_smooth'。 – user3616494

+0

是的,將截距改爲所需的點。 –

0
geom_smooth(aes(group = type)) 

這將給出每一類型不同的曲線。然後,您可以弄清楚如何排除其他人,如果你想

0
library(ggplot2) 
n <- 300 
x <- seq(0,100,,n) 
type <- factor(c(0,1)[sample(1:2, n, replace = TRUE)]) 
y <- 4 + 2*x + rnorm(n, sd=10) - 10*as.numeric(type) 
df <- data.frame(x=x, y=y, type=type) 
plot(y~x, df, bg=c("blue", "pink")[df$type], pch=21) 

bp <- ggplot(df, aes(x = x, y = y, col=type)) 
bp + 
    geom_point() + 
    geom_smooth(color = "black", alpha = 0.5, method = "lm", se = F) + 
    geom_smooth(aes(group = type), data = subset(df, type==0), se=F) 

enter image description here