从 R 中的两个数据框创建聚类堆积条形图

creating clustered stacked bar charts from two data frames in R

我正在为此苦苦挣扎,因为我没有使用 R 的经验,只是开始使用它。我从两个文件中将两个 table 加载到 R 中。Table 具有相同的结构。 Table 1 看起来像这样:

  SIZE   XXX   TIME-A     XXX    TIME-B   YYY   TIME-D   YYY    TIME-E  
   2     ...    59.21     ...     511.11  ...    55.31   ...     52.16
   3     ...    54.32     ...     514.31  ...    53.91   ...     56.12
   4     ...    5100.88   ...     566.9   ...    52.11   ...     545.73

和Table2:

  SIZE   XXX   TIME-A     XXX    TIME-B   YYY   TIME-D     YYY    TIME-E  
   2     ...    9.21      ...     11.11   ...    5.31      ...     2.16
   3     ...    4.32      ...     14.31   ...    3.91      ...     6.12
   4     ...    100.88    ...     66.9    ...    2.11      ...     45.73

我想在 R 中创建一个集群堆叠图,这样 table 1 的 TIME-A 堆叠在 table 2 的 TIME-A 上,对于 TIME- B、TIME-D 和 TIME-E。然后将这四个堆叠条按照 SIZE 列进行聚类。因此,最终结果是有 3 个集群,每个集群有四个堆叠条,如所述。现在这似乎是一项艰巨的任务,因为我仍在努力将两个 table 的两列相互堆叠,而不是关于聚类部分。我不是在寻找答案(尽管我非常感谢:]),但也许一些带有示例的链接对解决问题非常有帮助。

最好将数据帧绑定在一起,然后使用 ggplot2:

制作多面图
# create an 'id' variable for dataframe
d1$id <- "d1"
d2$id <- "d2"
# bind them together in one
d <- rbind(d1,d2)
# melt the result into long format
md <- melt(d, id.vars=c("id","SIZE"))

library(ggplot2)
ggplot(md, aes(x=SIZE, y=value, fill=id)) +
  geom_bar(stat="identity") +
  facet_wrap(~ variable, scales = "free_y", nrow=1)

给出:


已用数据:

d1 <- structure(list(SIZE = 2:4, TIME.A = c(59.21, 54.32, 5100.88), TIME.B = c(511.11, 514.31, 566.9), 
                     TIME.D = c(55.31, 53.91, 52.11), TIME.E = c(52.16, 56.12, 545.73)), 
                .Names = c("SIZE", "TIME.A", "TIME.B", "TIME.D", "TIME.E"), class = "data.frame", row.names = c(NA,  -3L))

d2 <- structure(list(SIZE = 2:4, TIME.A = c(9.21, 4.32, 100.88), TIME.B = c(11.11, 14.31, 66.9), 
                     TIME.D = c(5.31, 3.91, 2.11), TIME.E = c(2.16, 6.12, 45.73)), 
                .Names = c("SIZE", "TIME.A", "TIME.B", "TIME.D", "TIME.E"), class = "data.frame", row.names = c(NA, -3L))