2012-06-15 40 views
5

Tôi làm cách nào để tạo mũi tên hoặc đoạn có màu gradient bằng R?tạo mũi tên có màu gradient

+1

Bạn có thể cụ thể hơn, có thể đưa ra một mô tả đầy đủ của trường hợp sử dụng của bạn ... Bạn đã thử gì? – Justin

Trả lời

5

Hãy thử điều này,

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

Sửa: bạn có thể tái sử dụng nó trong một âm mưu, ví dụ

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

Trình diễn tuyệt vời về tạo mặt nạ và sau đó tô màu hình ảnh png bằng 'colorRamp'. Có thể được sử dụng trong mạng và như một đối tượng độc lập để dán vào các ứng dụng khác. –

5

Tôi nghĩ rằng Jim Lemon nên được tự động ban cho 10K, thậm chí có thể là 20K, đại diện cho SO chỉ bởi đức hạnh của tất cả công việc của mình trong những năm qua tạo ra các giải pháp cơ sở đồ họa. Anh chàng này thật tuyệt vời. Thời gian và một lần nữa ai đó sẽ yêu cầu một cái gì đó trên Rhelp, và ông sẽ whip lên một giải pháp. Dưới đây là "cầu vồng ngẫu nhiên" biếu không của trang trợ giúp:

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

Tất nhiên, tác giả của 'qplot (x, y, color = xydist, geom =" path ") của ggplot2 cũng có fanclub của riêng mình. – baptiste