r - 如何在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 完全陌生,我只是不知道如何完成这项工作。我真的很感激这方面的任何帮助。
提前致谢
解决方案
最简单的方法是将数据集转换为长格式(例如,使用包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")
另请参阅此处的答案:分组数据并绘制多条线。
推荐阅读
- tabulator - 从包含 JSON 的 PHP 页面填充 Tabulator 表
- java - SpringBootTest 属性占位符未解析
- typescript - 从单个 IPC 调用中获取多个 IPC 回调
- pandas - TypeError: '(slice(0, 201617, 1), slice(None, None, None))' 是一个无效的键
- excel - 如何将单个工作表中的数据导入到多个 SQL 表中
- windows - Windows 7 中的自签名证书问题 - 替代解决方案/提示
- angular - 等待承诺的响应以填充表单
- javascript - 使用JS重定向到子文件夹中包含的php中的父页面
- r - 使用 dplyr::order 将值从小到大排列的问题,包括小于 1 的正整数
- python-2.7 - 如何为多行字符串中的每组匹配字符创建单独的列表