首页 > 解决方案 > 如何在R中绘制多线图

问题描述

我有一个具有 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 

我想画一个这样的线图:

在此处输入图像描述

我正在尝试这个:

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 完全陌生,我只是不知道如何完成这项工作。我真的很感激这方面的任何帮助。

提前致谢

标签: rdataframeplotline-plot

解决方案


最简单的方法是将数据集转换为长格式(例如,使用包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")

在此处输入图像描述

另请参阅此处的答案:分组数据并绘制多条线


推荐阅读