построение data.frames с разными номерами строк и одинаковыми именами столбцов. Как добавить легенду и заголовки? - PullRequest
1 голос
/ 06 апреля 2020

Я хочу объединить три фрейма данных с разными номерами строк и одинаковыми именами столбцов в одном графике. Ниже приведен код, который я использую на основе другого вопроса переполнения стека> ggplot, объединяющего два графика из разных data.frames <</p>

    df1 <- data.frame(dist=c(5,10,15,25,30,40,45,50), #8
                      r2=c(105,90,70,50,40,15,17,8))
    df2 <- data.frame(dist=c(5,10,15,25,30,40,45,50,55,60),#10
                      r2=c(100,80,60,40,30,25,15,10,5,3))
    df3 <- data.frame(dist=c(3,5,10,15,20,25,30,35,40,45,50,60),#12
                      r2=c(110,100,80,60,50,35,30,25,20,15,10,5))
      ggplot() +
      theme_bw() +
      geom_line(data = df1, aes(x = dist, y = r2), color = "red") +
      geom_line(data = df2, aes(x = dist, y = r2), color = "blue")+
      geom_line(data = df3, aes(x = dist, y = r2), color = "orange")

Однако в этих ответах нет информации о добавление легенды, заголовка или корректирующей оси.
Любые советы по включению в график информации из этих трех фреймов данных.

1 Ответ

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

ggplot2 действительно любит вещи в «длинном» формате, поэтому давайте объединим данные, в некотором смысле сохранив имя кадра. Пока я использую "df1" строку для добавления к df1 фрейму, вы можете изменить строки на все, что захотите. Также произвольным является ярлык "nm", он может быть более описательным (но вы должны соответствовать ему в aes).

library(dplyr)
library(ggplot2)

df1$nm <- "df1"
df2$nm <- "df2"
df3$nm <- "df3"

bind_rows(df1, df2, df3) %>% 
  ggplot(aes(dist, r2)) +
  theme_bw() +
  geom_line(aes(color = nm)) +
  scale_color_manual(values = c(df1 = "red", df2 = "blue", df3 = "orange"))

ggplot

Кроме того, вы можете добавить отображение color aestheti c к исходному вызову ggplot, здесь нет ничего особенного. Я просто сократил ваш код для работы с этим форматом данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...