【问题标题】:How ro draw a multiline plot in R如何在R中绘制多线图
【发布时间】:2019-09-04 07:18:35
【问题描述】:

我有一个具有 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 完全陌生,我只是不知道如何完成这项工作。我非常感谢您对此提供任何帮助。

提前致谢

【问题讨论】:

标签: r dataframe plot line-plot


【解决方案1】:

最简单的方法是将数据集转换为长格式(例如,使用tidyr 包中的gather 函数),然后使用ggplot 中的group 美学进行绘图。

假设您的组变量名为“组”,我重新创建了您的数据集:

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")

另请参阅此处的答案:Group data and plot multiple lines

【讨论】:

  • 嗨。非常感谢您的回答!!这看起来像我需要的,但是当我执行您的代码时,我收到以下错误:object 'Group' not found。你知道我该如何解决这个问题吗?再次感谢:)
  • 我错过了一步:我假设您的组变量名为Group。请参阅上面的编辑。
  • 嘿,非常感谢,现在我做对了!请再问一个问题。我怎样才能显示具有按 X4 列升序排列的特征的图?
  • 这是一个单独的问题,cmets 部分不是为扩展讨论而设计的。我建议您为此问题打开一个新问题。
  • 你可能想参考这个问题:stackoverflow.com/q/18413756/6455166
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多