Как нарисовать многострочный сюжет в R - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть датафрейм с 6 функциями, подобными этим:

                X1   X2   X3   X4   X5   X6
Modern Dog     9.7 21.0 19.4  7.7 32.0 36.5
Golden Jackal  8.1 16.7 18.3  7.0 30.3 32.9
Chinese Wolf  13.5 27.3 26.8 10.6 41.9 48.1
Indian Wolf   11.5 24.3 24.5  9.3 40.0 44.6
Cuon          10.7 23.5 21.4  8.5 28.8 37.6
Dingo          9.6 22.6 21.1  8.3 34.4 43.1 

Я хочу нарисовать линию так:

enter image description here

Я пытаюсь это:

plot(df$X1, type = "o",col = "red", xlab = "Month", ylab = "Rain fall")

lines(c(df$X2, df$X3, df$X4, df$X5, df$X6), type = "o", col = "blue")

Но это только построение одной переменной. Извините, если этот вопрос раздражает, я совершенно новичок в R и просто не знаю, как это сделать. Я был бы очень признателен за любую помощь в этом.

Заранее спасибо

1 Ответ

2 голосов
/ 14 апреля 2019

Самый простой способ - преобразовать ваш набор данных в длинный формат (например, с помощью функции gather в пакете tidyr), а затем построить график с использованием эстетики group в ggplot.

Я воссоздаю ваш набор данных, предполагая, что ваша групповая переменная называется «Группа»:

df <- read.table(text = "
Group                X1   X2   X3   X4   X5   X6
Modern_Dog     9.7 21.0 19.4  7.7 32.0 36.5
Golden_Jackal  8.1 16.7 18.3  7.0 30.3 32.9
Chinese_Wolf  13.5 27.3 26.8 10.6 41.9 48.1
Indian_Wolf   11.5 24.3 24.5  9.3 40.0 44.6
Cuon          10.7 23.5 21.4  8.5 28.8 37.6
Dingo          9.6 22.6 21.1  8.3 34.4 43.1 ",
  header = TRUE, stringsAsFactors = FALSE)

Затем преобразуйте набор данных в длинный формат и построите график:

library(tidyr)
library(ggplot2)

df_long <- df %>% gather(X1:X6, key = "Month", value = "Rainfall")
ggplot(df_long, aes(x = Month, y = Rainfall, group = Group, shape = Group)) +
  geom_line() +
  geom_point() +
  theme(legend.position = "bottom")

enter image description here

См. Также ответы здесь: Группировка данных и построение нескольких строк .

...