2013-02-27 2 views
4

Есть ли способ вставить изображение в сюжет в R и установить его цвет, когда я это сделаю? Я хотел бы вставить силуэт для заданного набора данных и установить его в соответствии с цветом, который я выбрал для построения соответствующих точек данных. У меня нет четкого понимания того, как управляются графики - в компьютерных системах в целом и в R - которые могут сообщить ответ на этот вопрос.Как установить цвет вставленного изображения в r

Код, указанный ниже, будет содержать изображение, но я не могу найти способ изменить цвет.

require(jpeg) 
thiscolor <- "red" 
plot(x=c(1, 4), y=c(1, 2), main="test plot", col=thiscolor) 
thispic <- readJPEG(<insert path for any image here>) 
rasterImage(thispic, 
     xleft=3, xright=3.5, 
     ytop=2, ybottom=1.8, 
) 
+1

Привет, если ваше изображение уже является силуэтом, вы можете найти. Это легко. Просто откройте изображение в редакторе фотографий (если вы на Mac, вы можете использовать 'Preview') ', а затем просто активируйте« насыщенность »и отрегулируйте« оттенок »по желанию. –

ответ

3

Я не совсем понимаю, что вы подразумеваете под силутом здесь. Но для меня растр - это матрица цвета. Таким образом, вы можете изменить свой цвет. здесь демонстрация. Я использую, grid.raster из пакета grid. Но это то же самое с rasterImage

вот пример:

library(png) 
library(grid) 
img <- readPNG(system.file("img", "Rlogo.png", package="png")) 
## convert it to a raster, interpolate =F to select only sample of pixels of img 
img.r <- as.raster(img,interpolate=F) 
## Change all the white to a blanck 
img.r[img.r == "#00000000"] <- 'red' 
plot.new() 
grid.raster(img.r) 

enter image description here

1

Спасибо так много!

Поскольку я использовал имена цветов R, мне пришлось сделать немного (беззаботное) преобразование цвета. Но ваш код был именно тем, что мне нужно! Спасибо!

#convert image to raster 
thispic.r <- as.raster(thispic) 
#get the hex color 
rgbratios <- col2rgb(thiscolor)/255 
thiscolorhex <- rgb(red=rgbratios[1], 
         green=rgbratios[2], 
         blue=rgbratios[3]) 
#convert the non-white part of the image to the hex color 
thispic.r[thispic.r!="#FFFFFF"] <- thiscolorhex 
#plot it 
grid.raster(thispic.r, x=xval, y=yval, just="center") 
+0

рад, что мои ответы (много месяцев назад) помогут вам :) – agstudy

Смежные вопросы