Исходя из ваших комментариев, вот подход к выборке в качестве градиента.
imagerows <- 100
imagecols <- 100
cuts <- 8
(imagecols * imagerows) %% cuts == 0 #Must be true
colorgroups <- as.integer(cut(0:255,cuts))
colors <- c("red","green","blue")
result <- lapply(colors,function(y){
unlist(
lapply(seq(1,cuts),function(x){sample((0:255)[colorgroups == x],
size = (imagerows*imagecols)/cuts,
replace = TRUE)})
)})
result
теперь представляет собой список длиной 3
, каждый элемент которого представляет собой матрицу 100x100. Матрица содержит 100 * 100 случайных выборок между 0
и 255
, но в cuts
число возрастающих групп.
Затем мы можем контролировать направление градиента, используя byrow =
в matrix
и используя rev()
в данных.
red.matrix <- matrix((result[[1]]),nrow=imagerows,ncol=imagecols,byrow = TRUE)
green.matrix <- matrix((result[[2]]),nrow=imagerows,ncol=imagecols,byrow = FALSE)
blue.matrix <- matrix(rev(result[[3]]),nrow=imagerows,ncol=imagecols,byrow = FALSE)
Затем мы соединяем цвета вместе с rgb()
, который выводит вектор. Мы можем привести его обратно в матрицу, назначив размеры. Тогда просто построите с помощью grid.raster()
.
library(grid)
rgb.matrix <- rgb(red.matrix,green.matrix,blue.matrix,maxColorValue = 255)
dim(rgb.matrix) <- c(imagerows,imagecols)
grid.newpage()
grid.raster(rgb.matrix,interpolate = FALSE)