2012-06-15 6 views

ответ

5

Попробуйте это,

library(grid) 

png("mask.png") 
grid.polygon(c(-0.06, 0.06, 0.06, 0.15, 0, -0.15, -0.06), 
      c(-5, -5, 2.5, 2, 5, 2, 2.5), gp=gpar(fill="black"), 
      def="native", 
      vp=viewport(xs=c(-0.15, 0.15), ys=c(-5, 5))) 
dev.off() 

library(png) 
m <- readPNG("mask.png", native=FALSE) 
mask <- matrix(rgb(m[,,1],m[,,2],m[,,3]), 
       nrow=nrow(m)) 

rmat <- matrix(rgb(colorRamp(c("blue","white","red"))(seq(0,1,length=nrow(m))), maxColorValue=255), 
       nrow=nrow(m), ncol=ncol(m)) 
rmat[mask == "#FFFFFF"] <- NA 
grid.newpage() 
grid.raster(rmat) 

scrnsht

Edit: вы можете использовать его в участок, например

library(ggplot2) 
ggplot(iris) + geom_path(aes(Sepal.Length, Petal.Length, colour = Petal.Width)) + 
    guides(colour = guide_colourbar()) + 
    annotation_custom(rasterGrob(rmat, width=unit(1,"npc"), height=unit(1, "npc")), 
        x = 6, xmax=6.2, y=2.5, ymax=4) 

enter image description here

+0

Отличная демонстрация создания маски, а затем окрашивание png-изображения с помощью 'colorRamp'. Может использоваться в решетке и как отдельный объект для вставки в другие приложения. –

5

Я думаю, что Джим Лимон должен быть автоматически предоставлен 10K, может быть, даже 20K, rep указывает на SO только благодаря своей работе на протяжении многих лет, создавая базовые графические решения. Парень потрясающий. Снова и снова кто-то будет просить что-то о Rhelp, и он поднимет решение. Вот "случайный радуги" любезность страницы справки:

require(plotrix) 
x<-c(0,cumsum(rnorm(99))) 
y<-c(0,cumsum(rnorm(99))) 
xydist<-sqrt(x*x+y*y) 
plot(x,y,main="Random walk plot",xlab="X",ylab="Y",type="n") 
color.scale.lines(x,y,c(1,1,0),0,c(0,1,1),colvar=xydist,lwd=2) 

enter image description here

+1

Конечно, у автора gpplot2 'qplot (x, y, color = xydist, geom =" path ")' есть свой собственный фанклуб. – baptiste

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