首页 > 解决方案 > 向ggplot直方图添加散点图

问题描述

我想在 R 中添加一个散点图以覆盖到我的 ggplot 直方图上。在下面的 geom_point() 上,它给了我一个错误:错误:mapping必须由您创建,aes() 您能提供指导吗?

rand_nr <- 10000
rand_max <- 1
rand_min <- 0
lambda <- 1
x_min <- 0
x_max <- 10
bin_nr <- 50

diff_x <- (x_max - x_min) / bin_nr
edge <- seq(x_min, x_max, diff_x)
x_var <- seq(x_min, x_max, 0.01) # actual x variable
rand_var <- runif(rand_nr, rand_min, rand_max)

X <- tan(rand_var * pi / 2) # F(X)=(2/pi)*atan(x)

p <- 1 / (1 + (x_var^2))


X_df <- data.frame(X, group = "x")
P_df <- data.frame(p, group = "p")

plot(rand_var) # plot the random variables

ggplot(X_df, aes(X, probability (x),fill=group, colour=group)) + 
  geom_histogram(aes(y=..density..), breaks=edge, alpha=0.6, 
                 position="identity", lwd=0.2) +
  ggtitle("Normalized")

工作代码在上面。非工作代码如下


ggplot(X_df, aes(X, probability (x),fill=group, colour=group)) + 
  geom_histogram(aes(y=..density..), breaks=edge, alpha=0.6, 
                 position="identity", lwd=0.2) +
  geom_point(x_var,p,aes(x1,px1)) +
  ggtitle("Normalized") 

标签: rggplot2scatter

解决方案


是不是你要找的:

ggplot(X_df, aes(x=X,fill=group, colour=group)) + 
    geom_histogram(aes(y=..density..), breaks=edge, alpha=0.6, 
             position="identity", lwd=0.2) + 
    geom_point(data=P_df,aes(x = x_var,y =p)) +
  ggtitle("Normalized") 

在此处输入图像描述

发生了什么变化:

  • 首先,由于数据来自不同的数据框,您需要data=geom_point
  • 其次,正如错误所说,您需要提供参数 forxyinsideaes

推荐阅读