Ecco un'implementazione ho lavorato su per il pacchetto phonR
... la funzione fillTriangle
non viene esportata in modo da avere per utilizzare l'operatore :::
per accedervi. L'esempio mostra approcci basati su pch e raster.
# set up color scale
colmap <- plotrix::color.scale(x=0:100, cs1=c(0, 180), cs2=100, cs3=c(25, 100),
alpha=1, color.spec='hcl')
# specify triangle vertices and corner colors
vertices <- matrix(c(1, 4, 2, 1, 3, 4, length(colmap), 1, 30), nrow=3,
dimnames=list(NULL, c("x", "y", "z")))
# edit next line to change density/resolution
xseq <- yseq <- seq(0, 5, 0.01)
grid <- expand.grid(x=xseq, y=yseq)
grid$z <- NA
grid.indices <- splancs::inpip(grid, vertices[,1:2], bound=FALSE)
grid$z[grid.indices] <- with(grid[grid.indices,],
phonR:::fillTriangle(x, y, vertices))
# plot it
par(mfrow=c(1,2))
# using pch
with(grid, plot(x, y, col=colmap[round(z)], pch=16))
# overplot original triangle
segments(vertices[,1], vertices[,2], vertices[c(2,3,1),1],
vertices[c(2,3,1),2])
points(vertices[,1:2], pch=21, bg=colmap[vertices[,3]], cex=2)
# using raster
image(xseq, yseq, matrix(grid$z, nrow=length(xseq)), col=colmap)
# overplot original triangle
segments(vertices[,1], vertices[,2], vertices[c(2,3,1),1],
vertices[c(2,3,1),2])
points(vertices[,1:2], pch=21, bg=colmap[vertices[,3]], cex=2)

grazie per la grande soluzione ... c'è modo per iniziare a colore più scuro (rosso, verde e blu) in modo che aspetto gradiente più tagliente – jon
Ho provato un paio di diversa cose per rendere il gradiente più nitido, ma non sono riuscito a trovare un modo che non rendesse le aree del grafico molto scure e opache. Stai bene con rosso, verde e blu a partire negli angoli? Se lo sei, prova a sostituire l'ultima riga di codice con 'punti (x, y, col = rgb (d.red, d.green, d.blue), pch = 19) '- i gradienti per questi tre colori sembrano più nitidi poiché non si mescolano così tanto con gli altri colori all'origine. – Edward
perché tracci ogni punto individualmente? È possibile memorizzare un vettore di colori e tracciare tutti i punti contemporaneamente. – baptiste