2017-07-19 48 views
0

我想绘制一个函数 - 例如,一条线 - 在散点图内。我编写了两个独立的代码,但我怎样才能将它们组合起来?我的实验返回了错误消息。如何在ggplot的散点图上绘制函数

我的代码如下:

library(ROSE) 
data(hacide) 
train <- hacide.train 

散点图

ggplot(train, aes(x1, x2, colour = cls)) + 
    geom_point(size = 3, alpha = 0.4) 

enter image description here

线

db <- function(x, beta1, beta2, alpha){-alpha/beta2 - x * beta1/beta2} 

ggplot(data.frame(x = c(-4, 4)), aes(x = x)) + 
    stat_function(fun = db, args = list(-1.642354, -1.596056, -6.004609), colour = "blue" , size = 2) 

enter image description here

但如何叠加/结合线与散点图?

您的建议将不胜感激。

回答

0

这是你在找什么?

ggplot(data.frame(x = c(-4, 4)), aes(x = x)) + 
    stat_function(fun = db, args = list(-1.642354, -1.596056, -6.004609), colour = "blue" , size = 2)+ 
    geom_point(data = train, aes(x1, x2, colour = cls), size = 3, alpha = 0.4) 
0

最简单的方法就是将函数添加到原始图中。 ggplot2中的图形分层构建,这意味着您可以在构建图形时添加更多图层。

为您的代码,你可以做两种:

library(ROSE) 
data(hacide) 
train <- hacide.train 

db <- function(x, beta1, beta2, alpha){-alpha/beta2 - x * beta1/beta2} 

ggplot(train, aes(x1, x2, colour = cls)) + 
    geom_point(size = 3, alpha = 0.4) + 
    stat_function(fun = db, args = list(-1.642354, -1.596056, -6.004609), 
    colour = "blue" , size = 2) 

或将其添加到现有的情节:

library(ROSE) 
data(hacide) 
train <- hacide.train 

plot = ggplot(train, aes(x1, x2, colour = cls)) + 
     geom_point(size = 3, alpha = 0.4) 

db <- function(x, beta1, beta2, alpha){-alpha/beta2 - x * beta1/beta2} 

plot + stat_function(fun = db, args = list(-1.642354, -1.596056, -6.004609), 
colour = "blue" , size = 2)