R 向ggplot2打印添加线并调整图例

R 向ggplot2打印添加线并调整图例,r,ggplot2,R,Ggplot2,我使用ggplot2显示按值着色的点。另外,我想在这个数据上显示一条回归线 这是我正在使用的数据示例: structure(list(a = c(63.635707116462, 59.7200565823145, 56.0311239027684, 53.1573088984712, 51.0192317467653, 48.0727441921859, 47.1516684444444, 45.5081981068289, 43.5874967485549, 43.31632555123

我使用ggplot2显示按值着色的点。另外,我想在这个数据上显示一条回归线

这是我正在使用的数据示例:

structure(list(a = c(63.635707116462, 59.7200565823145, 56.0311239027684, 
53.1573088984712, 51.0192317467653, 48.0727441921859, 47.1516684444444, 
45.5081981068289, 43.5874967485549, 43.3163255512322), b = c(278.983796321269, 
254.833332215134, 234.812503036992, 221.519477352253, 212.013474843663, 
199.926648466351, 194.577007436116, 186.506133515809, 179.411968705754, 
172.056487287103), col = c(18.36245, 22.03494, 25.70743, 29.37992, 
33.05241, 36.7249, 40.39739, 44.06988, 47.74237, 51.41486), predict = c(275.438415187452, 
256.049214397717, 237.782656695549, 223.552332598712, 212.965175538386, 
198.374997400175, 193.814089203754, 185.676086057123, 176.165312823424, 
174.82254927815)), .Names = c("a", "b", "col", "predict"), row.names = c(NA, 
-10L), class = "data.frame")
我目前使用的代码如下:

p <- ggplot(data = df, aes(x = a, y = b, colour=col)) + geom_point()
p + stat_smooth(method = "lm", formula = y ~ x, se = FALSE)
在本例中,使用
+geom_-line(data=grid)
添加一条线,在我的例子中,这将是
+geom_-line(data=df)
。这只是将点连接在一起,而不是在绘图上绘制一条直线。我怎样才能在这个图上画出一条直线呢


我在情节上遇到的另一个问题是重新命名传奇。我希望数据有一个两个单词的标题(例如“Z密度”),但我不知道如何更改它。我曾尝试使用问题中的建议使用
+scale\u color\u discrete(name=“Fancy Title”)
+scale\u linetype\u discrete(name=“Fancy Title”)
,但它们不起作用,因为我的数据是由一个值着色的。

正如@Andrie所说,使用method=“lm”给出了一个线性模型。至于第二个问题,请使用
scale\u color\u continuous()


p我相信'geom\u smooth(stat=lm,…)实际上会产生一条完美的直线,正如你所希望的那样。对于
qplot()
,使用
geom\u smooth(method=“lm”)
确实有效(尽管直线不是完美的直线),但是
geom\u smooth(stat=lm,…)
(或
“lm”
)不适用于
ggplot
直线在屏幕上通常呈锯齿状,因为它由像素组成,而不是连续介质。传统上,反走样是用来对付这种情况的,我认为Mac上的默认设备会使用这种方法。啊!这就是问题所在。谢谢@james您也可以使用
labs(color=“Fancy Title”)
为图例添加标签。
model <- lm(b ~ a, data = df)
df$predict <- stats::predict(model, newdata=df) 
p <- ggplot(data = df, aes(x = a, y = b, colour=col) ) + geom_point() 
p + geom_line(aes(x = a, y = predict)) 
p <- ggplot(data = df, aes(x = a, y = b, colour=col)) + geom_point()
p + stat_smooth(method = "lm", se = FALSE) + 
    scale_colour_continuous(name = "My Legend")