r - 使用 ggplot2 从列表中绘制数据

标签 r ggplot2

我有一个 4 种不同矩阵长度的列表。我希望将它们绘制为一组时间序列,如下例所示,只是 x 轴是一个连续数字(例如 1:75),y 轴是矩阵值(例如 罪恶(1:75))。

enter image description here (https://homepage.divms.uiowa.edu/~luke/classes/STAT4580/timeseries_files/figure-html/unnamed-chunk-39-2.png)。

我知道 ggplot2 不处理列表,所以知道如何推进吗?

脚本:

mat1 <- matrix(cos(1:50), nrow = 50, ncol = 1)
mat2 <- matrix(sin(1:75), nrow = 75, ncol = 1)
mat3 <- matrix(tan(1:50), nrow = 50, ncol = 1)
mat4 <- matrix(1:100, nrow = 100, ncol = 1)
myList <- list(mat1, mat2, mat3, mat4)

names(myList)[1] <- "mat1"
names(myList)[2] <- "mat2"
names(myList)[3] <- "mat3"
names(myList)[4] <- "mat4"

最佳答案

是这样的吗?

library(tidyverse)
map_dfr(myList, ~as.data.frame(.x), .id = "id") %>%
    group_by(id) %>%
    mutate(n = 1:n()) %>%
    ungroup() %>%
    mutate(id = as.factor(id)) %>%
    ggplot(aes(n, V1, colour = id)) +
    geom_line() +
    facet_wrap(~ id, scales = "free")

enter image description here

说明:我们首先将所有矩阵转换为 data.frame 并将所有行绑定(bind)到一个包含 iddata.frame源自 list 名称;然后我们可以按 id 对行进行编号,然后绘制行号与单列的对比图。


这里是相同的代码“un-piped”和“uglified”

library(tidyverse)

# Convert from list of matrices to long data.frame
df.long <- map_dfr(myList, ~as.data.frame(.x), .id = "id")

# Group by id
df.long <- group_by(df.long, id)

# Add row number (per group)
df.long <- mutate(df.long, n = 1:n())

# ungroup
df.long <- ungroup(df.long)

# Make sure id is a factor
df.long <- mutate(df.long, id = as.factor(id))

# (gg)plot
ggplot(df.long, aes(n, V1, colour = id)) +
    geom_line() +
    facet_wrap(~ id, scales = "free")

很容易看出 %>% 如何获取左边的对象并将其用作右边函数的第一个参数;所以 f(x) 会变成 x %>% f()

关于r - 使用 ggplot2 从列表中绘制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507268/

相关文章:

r - ggplot 黑色和白色

r - ggplot和R : Two variables over time

r - 如何使用显示所有年龄级别的个人数据制作人口金字塔,即使 R 中没有该级别的数据?

r - 如何在 R 中的网格上的特定位置排列图?

r - 获取 R 中的所有组合,允许重复

r - 列名在 read.table 或 read.csv 上向左移动

r - UseMethod中的错误(“group_vars”): no applicable method for 'group_vars' applied to an object of class “factor”

r - 提取R中字符串中的最后一个单词

r - 显示单个变量的 ggplot 方面

r - 运行mlr包中的predict()函数时出错