2013-10-10 179 views
3

我有一個數據幀image.rgb,我已經加載了圖像的每個座標(使用jpegreshape包)的r,g,b值。它現在看起來像:如何使用ggplot2繪製(x,y,r,g,b)座標圖像?

> 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值可以從我指定的列中獲取?

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

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

但我希望能夠做到這一點使用GGPLOT2

+0

爲了闡明數據幀的結構,對於每個(X,Y) - 該範圍內的圖像座標 - 將有正好一個在數據框中輸入(不多也不少) – user2175594

+0

ggplot(data = image.rgb,aes(x = x,y = y,col = rgb(r,g,b)))+ geom_point() '?似乎在這裏工作... – juba

+0

@juba rgb(r,g,b)創建一個字符串值,該值在傳遞給col參數時由ggplot2分配任意顏色,而不是其中指定的實際RGB顏色。 – user2175594

回答

6

您必須添加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() 

enter image description here

+2

'geom_raster()'是另一種選擇。 – bdemarest