5

我有一个数据框image.rgb,我已经为图像的每个坐标加载了 r,g,b 值(使用jpegandreshape包)。现在看起来像:

> head(image.rgb)
   y x         r         g         b
1 -1 1 0.1372549 0.1254902 0.1529412
2 -2 1 0.1372549 0.1176471 0.1411765
3 -3 1 0.1294118 0.1137255 0.1176471
4 -4 1 0.1254902 0.1254902 0.1254902
5 -5 1 0.1254902 0.1176471 0.1294118
6 -6 1 0.1725490 0.1372549 0.1176471

现在我想使用 ggplot2 绘制这个“图像”。我可以使用以下方法一次绘制一个特定的“通道”(红色或绿色或蓝色):

ggplot(data=image.rgb, aes(
            x=x, y=y,
            col=g) #green for example
       ) + geom_point()

...在默认的 ggplot2 色标上

有没有办法指定可以从我指定的列中获取确切的 rgb 值?

使用包plot中的功能base,我可以使用

with(image.rgb, plot(x, y, col = rgb(r,g,b), asp = 1, pch = "."))

但我希望能够使用 ggplot2 来做到这一点

4

1 回答 1

9

您必须添加scale_color_identity才能“按原样”获取颜色:

ggplot(data=image.rgb, aes(x=x, y=y, col=rgb(r,g,b))) + 
    geom_point() + 
    scale_color_identity()

您提供的示例数据给出了非常相似的颜色,因此所有点似乎都是黑色的。使用geom_tile不同的颜色更加明显:

ggplot(data=image.rgb, aes(x=x, y=y, fill=rgb(r,g,b))) +
    geom_tile() +
    scale_fill_identity()

在此处输入图像描述

于 2013-10-10T07:37:24.490 回答