重新格式化R表()命令的输出,用于绘图



我想绘制一些计数数据(可能是气泡图)。我有一些不同的实验,每个实验,我有三个重复。table()命令的输出如下所示。

> with(myData.df, table(ChargeGroup,Expt,Repx))
, , Repx = 1
Expt
ChargeGroup Ctrl CV2 Gas n15 n30 n45 n60 p15 p30  v0
<+10     540 512 567 204 642 648  71   2   2   6
+10:+15  219 258 262 156 283  16   0   1   0   7
+15:+20  119 118  14 200  14   0   0   7   0  51
+20:+25   57  38   0  84   1   0   0  31   7  87
+25:      30  16   0  17   0   0   0  24  19  18
, , Repx = 2
Expt
ChargeGroup Ctrl CV2 Gas n15 n30 n45 n60 p15 p30  v0
<+10     529 522 582 201 642 626  77   1   2   5
+10:+15  232 249 264 150 273  14   0   1   0   5
+15:+20  116 113  18 204  13   0   0  12   0  41
+20:+25   53  46   0  82   0   0   0  36   6  94
+25:      28  12   0  26   0   0   0  33  21  28
, , Repx = 3
Expt
ChargeGroup Ctrl CV2 Gas n15 n30 n45 n60 p15 p30  v0
<+10     536 525 591 224 671 641  63   1   2   6
+10:+15  236 238 257 170 276  16   0   2   1  10
+15:+20  113 108  15 212  12   0   0  10   0  47
+20:+25   57  40   0  77   0   0   0  34   3 107
+25:      32  11   0  25   0   0   0  26  15  26

有没有人可以帮助进一步处理输出,以便我可以直接在基本图形或ggplot中进行绘图?由于

有两种方法-使用base R,通过在第三维上循环并使用barplot绘制

par(mfrow = c(3, 1))
apply(with(myData.df, table(ChargeGroup,Expt,Repx)), 3, barplot)

测试

par(mfrow = c(3, 1))
apply(with(mtcars, table(cyl, vs, gear)), 3, barplot)

或使用as.data.frame转换为单个数据帧,使用ggplot或直接使用count获得数据帧/图像输出

library(dplyr)
library(ggplot2)
myData.df %>%
count(ChargeGroup,Expt,Repx) %>%
ggplot(aes(x=ChargeGroup, y = n, fill = Expt)) +
geom_col() +
facet_wrap(~ Repx)

测试

mtcars %>%
count(cyl = factor(cyl), vs = factor(vs), gear = factor(gear)) %>% 
ggplot(aes(x = cyl, y = n, fill = vs)) +
geom_col() + 
facet_wrap(~ gear)

最新更新