Как разместить линию корреляции для каждого data.frame в ggplot - PullRequest
0 голосов
/ 28 февраля 2019

Я не могу понять, как разместить две строки корреляции для каждого data.frame в R. Код выглядит так:

combinedplot <- ggplot() +
geom_point(data = data.frame1, aes(x=variable1, y=variable2, color='red')) + 
geom_point(data = data.frame2, aes(x=variable1, y=variable2, color='blue')) +
labs(x="Date", y="PM 2.5 ugm3")
combinedplot

Я также пытался

combinedplot <- ggplot() +
geom_point(data = data.frame1, aes(x=variable1, y=variable2, color='red')) + 
geom_point(data = data.frame2, aes(x=variable1, y=variable2, color='blue')) +
labs(x="Date", y="PM 2.5 ugm3")
combinedplot + geom_smooth(method='lm')

И

combinedplot <- ggplot() +
geom_point(data = data.frame1, aes(x=variable1, y=variable2, color='red')) + 
geom_smooth(method='lm') +
geom_point(data = data.frame2, aes(x=variable1, y=variable2, color='blue')) + 
geom_smooth(method='lm') +
labs(x="Date", y="PM 2.5 ugm3")
combinedplot 

Оба варианта просто напечатать график без линий, какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Если вы хотите объединить два графика, лучше объединить два data.frames до, rbind объединяя их вместе после определения новой переменной, которая сообщает, из какого data.frame пришли данные.

Что-то вроде следующего.

library(ggplot2)

data.frame1$group <- "df1"
data.frame2$group <- "df2"
df_all <- rbind(data.frame1[, c("variable1", "variable2", "group")],
                data.frame2[, c("variable1", "variable2", "group")])


combinedplot <- ggplot(df_all, aes(x = variable1, y = variable2, colour = group)) +
  geom_point() + 
  labs(x = "Date", y = "PM 2.5 ugm3") +
  scale_color_manual(values = c('red', 'blue'))

combinedplot + geom_smooth(method = 'lm')

enter image description here

Код создания данных.

set.seed(1234)    # Make the results reproducible
data.frame1 <- data.frame(variable1 = 1:20, variable2 = 2*(1:20) + rnorm(20) )
data.frame2 <- data.frame(variable1 = 1:25, variable2 = 0.75*(1:25) + rnorm(25) )
0 голосов
/ 28 февраля 2019

Вам необходимо предоставить данные и эстетику для функции geom_smooth(), например:

+ geom_smooth(
  data = data.frame1,
  aes(x = variable1, y = variable2, color = "red"),
  method = "lm"
)
...