r 绘图函数问题

时间:2020-12-23 18:45:56

标签: r ggplot2 plot

我有一个数据数组 a,如下所示:

a <- structure(c(0.9984951, 0.9959022, 0.9888077, 0.9691369, 0.9110772, 
0.001501177, 0.004070025, 0.010984665, 0.029266702, 0.075221083, 
0.999987, 0.9999417, 0.9997387, 0.9988276, 0.9947208, 1.300713e-05, 
5.829127e-05, 0.0002611903, 0.001169507, 0.005219817, 0.9999757, 
0.9999152, 0.9997039, 0.9989658, 0.996382, 2.430024e-05, 8.481104e-05, 
0.0002959571, 0.001032229, 0.003593514), .Dim = c(5L, 2L, 3L))

dim(a)
[1] 5 2 3

a
, , 1
          [,1]        [,2]
[1,] 0.9984951 0.001501177
[2,] 0.9959022 0.004070025
[3,] 0.9888077 0.010984665
[4,] 0.9691369 0.029266702
[5,] 0.9110772 0.075221083

, , 2

          [,1]         [,2]
[1,] 0.9999870 1.300713e-05
[2,] 0.9999417 5.829127e-05
[3,] 0.9997387 2.611903e-04
[4,] 0.9988276 1.169507e-03
[5,] 0.9947208 5.219817e-03

, , 3

          [,1]         [,2]
[1,] 0.9999757 2.430024e-05
[2,] 0.9999152 8.481104e-05
[3,] 0.9997039 2.959571e-04
[4,] 0.9989658 1.032229e-03
[5,] 0.9963820 3.593514e-03

我有另一个与数据数组的第一维长度相同的向量:

b = c(-1, -0.5, 0, 0.5, 1)

在 r 中有没有办法绘制数据,以便我可以得到 3 个单独的图(这个数字等于数组的第三个维度,每个图上有 2 行(这个数字等于数组的第二个维度) . 并且每一行都是第二维值作为y轴,向量b作为x轴,所以第一个数据块应该是第一个图,两列表示两条线,每一列是y值,并且相应的 x 值包含在 b 向量中。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

既然您要求 ggplot 解决方案,那么让我们全力以赴使用 Tidyverse。

首先,让我们将我们的 3 维数组转换为 data.frames 列表:

my.dfs <- apply(a,3,as.data.frame)

数据框列必须在 R 中命名,因此它们将获得 c("V1","V2") 的默认值。如果需要,您可以在 apply 调用中将它们设置为不同的内容。

现在让我们使用 purrr::map2 将数组中的数据、绘图编号和 b 向量绑定在一起

library(tidyvers)
data <- map2_dfr(my.dfs,seq_along(my.dfs),~cbind(.x,plot = .y, b)) 

为了绘图,我们需要将数据转换为长格式:

data <- pivot_longer(data, -c(plot,b), names_to = "variable")

最后,我们可以使用 col = asthetic 通过变量更改线条颜色并使用 facet_wrap 制作多个绘图。

ggplot(data, aes(x = b, y = value, col = variable)) +
  geom_line() +
  facet_wrap(~plot)

enter image description here

答案 1 :(得分:0)

你应该考虑:

d <- dim(a)
data.frame( x = b, y = c(a), plots = gl(d[3], prod(d[-3])), cols = gl(d[2], d[1])) %>%
    ggplot(aes(x, y, col = cols)) +
    geom_line() +
    facet_wrap(~plots)

enter image description here

相关问题