Добавить график рассеяния к гистограмме ggplot - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы добавить график рассеяния для наложения на мою гистограмму ggplot в R. На приведенной ниже 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") 

1 Ответ

2 голосов
/ 06 апреля 2020

Это то, что вы ищете:

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") 

enter image description here

Что изменилось:

  • Во-первых, поскольку данные поступают из другого фрейма данных, вам нужно добавить аргумент data= в geom_point
  • Во-вторых, как говорится в сообщении об ошибке, вы должны предоставить аргументы для x и y внутри из aes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...