我正在使用 RStudio 创建搁架单元中的对象热图。 IRL 货架的配置方式是,一列从上到下是#1-8 货架,下一列从上到下是#9-16 货架,依此类推,总共 54 个货架单元,重复 6 个货架过道。我正在尝试在 R 中创建一个视觉布局,模仿数据集的相同设置,其中包括行号、货架号和该行货架的对象计数的变量。我希望热图“换行”,以便有一个列映射货架 1-8,然后是一个列映射货架 9-16,依此类推。这可能吗?下面以一段数据为例:
# A tibble: 274 × 3
# Groups: Row [6]
Row Shelf count
<dbl> <dbl> <int>
1 1 1 4
2 1 2 5
3 1 3 2
4 1 4 4
5 1 5 3
6 1 6 1
7 1 7 6
8 1 8 7
9 1 9 9
10 1 10 3
# ℹ 264 more rows
我有一列完整货架过道的热图代码:
ggplot(data = dupesSorted %>% filter(Row==1),
aes(x = Row, y = Shelf, fill = count)) +
geom_tile() +
scale_fill_continuous(low = 'yellow', high = 'red', na.value = 'gray')+
geom_text(aes(label = count))+
scale_y_reverse(breaks = seq(1, 54, by = 1))+
scale_x_continuous(breaks = seq(1, 6, by = 1))
这个代码用于我希望初始列的单独热图:
ggplot(data = dupesSorted %>% filter(Row==1, Shelf<8),
aes(x = Row, y = Shelf, fill = count)) +
geom_tile() +
scale_fill_continuous(low = 'yellow', high = 'red', na.value = 'gray')+
geom_text(aes(label = count))+
scale_y_reverse(breaks = seq(1, 8, by = 1))+
scale_x_continuous(breaks = seq(1, 6, by = 1))
如果可能的话,我想做的是创建一个相同比例的热图,以 8 列的形式遍历所有 54 个货架。
我尝试通过添加使用facet_wrap()函数
facet_wrap(~Shelf, ncol=6)
到 ggplot 函数,但这将可视化分为 54 个单独的框,一个用于每个架子,然后将那些可视化分为 6 列。有没有一种方法可以创建一个连续的可视化,但以指定的时间间隔中断到新列?
dupesSorted <- data.frame(
Row = rep(1:6, each = 54),
Shelf = rep(1:54, times = 6),
count = rpois(54*6, 7)
)
dupesSorted |>
mutate(x_pos = (Shelf - 1) %/% 8 + 1,
y_pos = (Shelf - 1) %% 8 + 1) |>
ggplot(aes(x_pos, y_pos, fill = count)) +
geom_tile() +
scale_fill_continuous(low = 'yellow', high = 'red', na.value = 'gray')+
geom_text(aes(label = count))+
scale_y_reverse(breaks = seq(1, 54, by = 1))+
scale_x_continuous(breaks = seq(1, 6, by = 1)) +
facet_wrap(~Row)