0

我有一个时间序列(尽管规模很小,即 4 天)数据集,它由四组组成,比如格兰诺拉麦片的类型。一些成分在格兰诺拉麦片的类型之间是共享的,因此格兰诺拉麦片“A”由成分“x”、“y”、“c”、“f”组成,格兰诺拉麦片“B”由“g”、“t”组成,“f”,“e”。格兰诺拉麦片“A”和格兰诺拉麦片“B”都含有成分“f”

我正在尝试绘制动物每天从提供的格兰诺拉麦片样品中摄取的每种成分的数量。

我尝试在“geom_raster()”中使用“组”调用,但这没有效果。

以下是一些示例数据:

    'test.df <- data.frame(day = c(rep(1, 4), rep(2, 4), rep(3,4), rep(4,4), rep(1,5), rep(2,5), rep(3,5), rep(4,5),
                          rep(1, 3), rep(2, 3), rep(3,3), rep(4,3), rep(1, 4), rep(2, 4), rep(3,4), rep(4,4)), 
                  spp = rep("species A"),
                  type = c(rep("A", 16), rep("B", 20), rep("C", 12), rep("D", 16)),
                  comp = c(rep(c("ss", "pe", "mi", "li"),4), rep(c("co", "csf", "cd", "ah", "mi"),4),
                                                                 rep(c("cd", "cgf", "ah"),4),
                                                                 rep(c("di", "csf", "xi", "ef"),4)),
                  value = sample(0.0:60.0, 64, replace = T))

     ggplot(test.df) +
     geom_raster(aes(x = day, y = comp, group= type, fill = value)) + 
     scale_fill_gradientn(colours = rainbow(10)) +
     coord_equal()

我希望让 y 轴按组显示每个组件,这样类似的组件就不会组合在一起。

更新:我为每个组制作了一个对象,然后将每个对象绘制出来。我正在寻找的最终结果是将四个地块堆叠成一个地块。

A <- test.df %>%
  filter(type == "A")

B <- test.df %>%
  filter(type == "B")

C <- test.df %>%
  filter(type == "C")

D <- test.df %>%
  filter(type == "D")

ggplot(A) +
  geom_raster(aes(x =day, y = comp, fill = value)) + 
  scale_fill_gradientn(colours = rainbow(10)) + coord_equal()  +
  ylab("A")

ggplot(B) +
  geom_raster(aes(x =day, y = comp, fill = value)) + 
  scale_fill_gradientn(colours = rainbow(10)) + coord_equal()  +
  ylab("B")

ggplot(C) +
  geom_raster(aes(x =day, y = comp, fill = value)) + 
  scale_fill_gradientn(colours = rainbow(10)) + coord_equal()  +
  ylab("C")

ggplot(D) +
  geom_raster(aes(x =day, y = comp, fill = value)) + 
  scale_fill_gradientn(colours = rainbow(10)) + coord_equal()  +
  ylab("D")

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

在此处输入图像描述

4

0 回答 0