用渐变色创建箭头

6
如何使用R创建具有渐变颜色的箭头或线段?

1
你能更具体一些吗?也许可以给出完整的用例描述...你尝试过什么? - Justin
2个回答

7

我认为Jim Lemon应该因为多年来创建基础图形解决方案的工作而自动获得10K,甚至是20K的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


2
当然,ggplot2的qplot(x, y, colour=xydist, geom="path")的作者也有自己的粉丝俱乐部。 - baptiste
@baptiste: 我是你的粉丝俱乐部成员。不幸的是,我发现你不再在这里参与了。 - IRTFM

6
尝试以下内容,
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

编辑: 你可以在绘图中重新使用它,例如。

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


非常棒的演示,展示了如何构建一个掩模,然后使用 colorRamp 对 PNG 图像进行着色。可以在格子图和作为独立对象中使用,以便将其粘贴到其他应用程序中。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接