Это может быть то, что вы хотите. Я не понимаю, почему каждый блок не может быть просто строкой, как показано на рисунке ниже. Если вам нужны причудливые фигуры, вам нужно указать критерии для рисования этой фигуры для блока.
library(tidyverse)
n_blocks <- 12
m_treatments <- 5
plot_sample_treatments <- function(n_blocks,m_treatments){
df <- do.call("rbind",
lapply(1:n_blocks,
function(x) data.frame(
treatment = sample(1:m_treatments,m_treatments),
block = paste0('Block ',x),
sequence = (1:m_treatments))))
df %>% ggplot(aes(x = sequence, y = block, fill = factor(treatment))) +
geom_tile(color = 'gray30') +
scale_x_discrete(expand = c(0,0))
}
plot_sample_treatments(12,5)
, что дает следующее:
![enter image description here](https://i.stack.imgur.com/2KNAz.png)