RGB 相当于 R 中的 image() 函数?

标签 r image plot data-visualization

我正在运行一个模拟,让两种类型的代理相互竞争。我们将这些代理称为“红色”和“蓝色”。有三种可能的结果:红色获胜、蓝色获胜或所有人都失败。我们还假设系统取决于两个参数:X 和 Y。

我想做的是创建一个伪彩色图,将结果编码为 X 和 Y 的函数。

  • 每个点的色调是在有人获胜的情况下红色或蓝色获胜的可能性。如果蓝色总是获胜,那么它就是蓝色;如果红色总是获胜,那么它就是红色;等等

  • 饱和度是指任何人获胜的概率。因此,如果没有人在 X 和 Y 的某个值上获胜,那么该点将是灰色的(无论如何,在 HSV 模型中)。

编辑:假设我们使用编码为 here 的 HSV 模型。 (不一定是这样,但我们可以这么说。)HSV 空间中的纯蓝色为 (240, 100, 100),纯红色为 (360, 100, 100)。还假设红色获胜的概率为 50%,蓝色获胜的概率为 25%,而无人获胜的概率为 25%。那么这个点将是(330,75,100)。

请注意,我并不担心从 HSV 转换为 RGB - 为此,我可以使用 col2rgb(hsv(...))。问题在于阴谋本身。据我所知, image() 函数只能编码一个 channel 的信息;这是两个信息 channel 。

此外,结果是 X 和 Y 的连续函数,因此我想在值之间进行插值。 (如果重要的话,我正在使用“akima”包。)因此我找到了解决方案 here对我没有帮助(我认为)。

我很乐意使用任何软件包。我也很高兴不使用 R,只要结果漂亮并且不太复杂即可。

感谢您提供的任何帮助。

最佳答案

如果您可以使用 rgb 值创建一个数组(维度 1 和 2 指您的矩阵,维度 3 是红色、绿色和蓝色分量),那么您可以使用 rasterImage 绘制此数组功能。

一个简单的例子(我将把 hsv -> rgb 的转换留给你):

red <- matrix( runif(100), 10, 10 )
blue <- matrix( runif(100), 10, 10 )

rgb.mat <- array( dim=c(10,10,3) )
rgb.mat[ , ,1 ] <- red
rgb.mat[ , ,2 ] <- 0
rgb.mat[ , ,3 ] <- blue

plot.new()
plot.window(xlim=c(0,1),ylim=c(0,1))
rasterImage( rgb.mat, 0,0,1,1 )  # interpolate
rasterImage( rgb.mat, 0,0,1,1, interpolate=FALSE ) # don't

关于RGB 相当于 R 中的 image() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021048/

相关文章:

R - 具有特定值的置换(样本)列

matlab - 如何压制数字?

latex - 在 LaTeX 中自动将图片调整为 A4

wpf - WPF图像的持续(快速)更新

java - 对于生成的 pdf 文件,静态图像不会与 Flying Saucer 和 thymeleaf 一起显示

python - 使用 matplotlib 在 Python 中未显示绘图

r - 绘制经验累积概率函数及其反函数

r - 从大量等长字符串中为每个字符创建一个出现矩阵

r - 如何将 tibble 元素映射到 ggplot2 美学?

r - 使条形图中的条具有相同的高度