Jak utworzyć strzałkę lub segment z kolorem gradientu za pomocą R?Utwórz strzałkę z kolorem gradientu
Odpowiedz
Spróbuj tego,
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)
Edit: można używać go w działce, na przykład
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)
Świetna demonstracja budowania maski, a następnie kolorowanie obrazu png za pomocą 'colorRamp'. Może być używany w sieci i jako samodzielny obiekt do wklejania do innych aplikacji. –
Uważam, że Jim Lemon powinien zostać zautomatyzowany w skali 10K, a może nawet 20K, za punkty na SO, dzięki całej swojej pracy na przestrzeni lat, tworząc bazowe rozwiązania graficzne. Facet jest niesamowity. Od czasu do czasu ktoś poprosi o coś na Rhelp, a on rozwikła rozwiązanie. Oto "random rainbow" dzięki uprzejmości strony pomocy:
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)
Oczywiście, autor 'qplot (x, y, color = xydist, geom =" path ") ggplot2 ma swój własny fanklub. – baptiste
Czy można być bardziej szczegółowe, może dać pełnego opisu przypadku użycia ... Co próbowałeś? – Justin