Вопрос по plot, r, ggplot2 – Построение двух переменных с использованием ggplot2 - та же ось х

5

У меня есть два графика с одинаковой осью х - диапазон х составляет 0-5 в обоих из них. Я хотел бы объединить их в один график, и я не нашел предыдущего примера. Вот что я получил:

c <- ggplot(survey, aes(often_post,often_privacy)) + stat_smooth(method="loess")
c <- ggplot(survey, aes(frequent_read,often_privacy)) + stat_smooth(method="loess")

Как я могу их объединить? Ось у "часто конфиденциальна" и на каждом графике ось x часто "после" или "частое чтение". Я думал, что смогу их легко (как-то) объединить, потому что в обоих случаях диапазон 0-5.

Большое спасибо!

Это довольно легко, изменив (reshape2::melt) и затем использование эстетики, такой как цвет (или просто группа), чтобы различить две переменные. Вам нужноmelt таким образом, что вы держитеoften_privacy в качестве переменной id. Если вы публикуете небольшое подмножество ваших данных (сdput) Я уверен, что вы получите ответ. Ben Bolker

Ваш Ответ

3   ответа
10

#Sample data
survey <- data.frame(
  often_post = runif(10, 0, 5), 
  frequent_read = 5 * rbeta(10, 1, 1), 
  often_privacy = sample(10, replace = TRUE)
)
#Reshape the data frame
survey2 <- melt(survey, measure.vars = c("often_post", "frequent_read"))
#Plot using colour as an aesthetic to distinguish lines
(p <- ggplot(survey2, aes(value, often_privacy, colour = variable)) + 
  geom_point() +
  geom_smooth()
)
4

+ объединить другие участки на том жеggplot объект. Например, чтобы построить точки и сглаженные линии для обеих пар столбцов:

ggplot(survey, aes(often_post,often_privacy)) + 
geom_point() +
geom_smooth() + 
geom_point(aes(frequent_read,often_privacy)) + 
geom_smooth(aes(frequent_read,often_privacy))
это хорошо отвечает на вопрос, хотя я думаю, что мой комментарий выше предлагает более «идиоматический» способ сделать это (который среди прочего обеспечивает (1) автоматическую легенду (2) более компактный код [хотя для только двух переменных это не большое преимущество])
0

df <- data.frame(x=x_var, y=y1_var, type='y1') 
df <- rbind(df, data.frame(x=x_var, y=y2_var, type='y2'))
ggplot(df, aes(x, y, group=type, col=type)) + geom_line()

enter image description here

Похожие вопросы