我有一个像素坐标的二维矩阵($n \times 2$ matrix)和一个RGB像素值的三维矩阵($n \times 3$ matrix)。有人知道R中有一个函数可以生成图像吗(例如,类似于Python中的imshow())?我在谷歌上搜索了一下这个平台,但是我没有找到任何类似的东西--如果我错过了一些明显的东西,我道歉。感谢你能提供的任何帮助!
lmvvr0a81#
imager包可以帮助解决这个问题!
imager
require( tidyr ) require( imager ) # example data from `imager` package dat <- boats # plot( boats ) # tall dat_original <- as.data.frame( dat ) head( dat_original ) # x y cc value #1 1 1 1 0.3882 #2 2 1 1 0.3859 #3 3 1 1 0.3849 #4 4 1 1 0.3852 #5 5 1 1 0.3860 #6 6 1 1 0.3856 dat_wide <- pivot_wider( dat_original, names_from = 'cc', values_from = 'value' ) head( dat_wide ) # A tibble: 6 × 5 # x y `1` `2` `3` # <int> <int> <dbl> <dbl> <dbl> #1 1 1 0.388 0.388 0.388 #2 2 1 0.386 0.386 0.386 #3 3 1 0.385 0.385 0.385 #4 4 1 0.385 0.385 0.385 #5 5 1 0.386 0.386 0.386 #6 6 1 0.386 0.386 0.386
(您需要将数据从M2 d、M3 d调整为五列宽,使其看起来像这样):例如,您可以用途:第一次
dat_tall <- pivot_longer( YOUR_DATA , cols= c( 'R','G','B' ) , names_to = 'cc' , values_to = 'value' ) head(dat_tall) ## A tibble: 6 × 4 # x y cc value # <int> <int> <chr> <dbl> #1 1 1 1 0.388 #2 1 1 2 0.388 #3 1 1 3 0.388 #4 2 1 1 0.386 #5 2 1 2 0.386 #6 2 1 3 0.386
dat_tall$cc %<>% as.integer ## A tibble: 6 × 4 # x y cc value # <int> <int> <int> <dbl> #1 1 1 1 0.388 #2 1 1 2 0.388 #3 1 1 3 0.388 #4 2 1 1 0.386 #5 2 1 2 0.386 #6 2 1 3 0.386
image_data <- dat_tall as.cimg( image_data ) %>% plot
1条答案
按热度按时间lmvvr0a81#
imager
包可以帮助解决这个问题!1.为演示准备数据
2.演示
(您需要将数据从M2 d、M3 d调整为五列宽,使其看起来像这样):
例如,您可以用途:
第一次
然后让数据变高
并修复列“cc”(它必须是整数,而不是字符)
最后,制作一个图像