Ho creato una trama con 3 milioni di punti e l'ho salvata come PNG. Ci sono volute alcune ore e vorrei evitare di ridisegnare tutti i punti.Come stampare con un png come sfondo?
Come si genera una nuova trama che ha questa PNG come sfondo?
Ho creato una trama con 3 milioni di punti e l'ho salvata come PNG. Ci sono volute alcune ore e vorrei evitare di ridisegnare tutti i punti.Come stampare con un png come sfondo?
Come si genera una nuova trama che ha questa PNG come sfondo?
Prova questa:
library(png)
#Replace the directory and file information with your info
ima <- readPNG("C:\\Documents and Settings\\Bill\\Data\\R\\Data\\Images\\sun.png")
#Set up the plot area
plot(1:2, type='n', main="Plotting Over an Image", xlab="x", ylab="y")
#Get the plot information so the image will fill the plot box, and draw it
lim <- par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
grid()
lines(c(1, 1.2, 1.4, 1.6, 1.8, 2.0), c(1, 1.3, 1.7, 1.6, 1.7, 1.0), type="b", lwd=5, col="white")
Di seguito la trama.
Mentre @ di bill_080 risposta risponde direttamente alla tua domanda, è davvero questo quello che vuoi? Se vuoi tracciare questo, dovrai allineare attentamente i tuoi sistemi di coordinate. Vedi per es. Houston Crime Map come questo può essere fatto con ggplot2.
Per il tuo problema, mi sembra che ci possa essere una soluzione più semplice: binning, cioè cazzeggio istogrammi 2d.
> df <- data.frame (x = rnorm (1e6), y = rnorm (1e6))
> system.time (plot (df))
User System verstrichen
54.468 0.044 54.658
> library (hexbin)
> system.time (binned <- hexbin (df, xbins=200))
User System verstrichen
0.252 0.012 0.266
> system.time (plot (binned))
User System verstrichen
0.704 0.040 0.784
hexbin lavora direttamente con reticolo e ggplot2, ma coordina il centro di bidoni sono in [email protected]
e [email protected]
, così si potrebbe anche tracciare il risultato nella grafica di base. Con alto numero di cassonetti, si ottiene una versione veloce della tua trama originale:
> system.time (plot ([email protected], [email protected], pch = 20, cex=0.4))
User System verstrichen
0.780 0.004 0.786
ma si può facilmente avere i colori che codificano la densità:
> plot ([email protected], [email protected], pch = 20, cex=0.4, col = as.character (col))
> col <- cut ([email protected], 20)
> levels (col) <- grey.colors (20, start=0.9, end = 0)
> plot ([email protected], [email protected], pch = 20, cex=0.4, col = as.character (col))
Mai usato, ma il pacchetto 'png' potrebbe avere quello che stai cercando: http://cran.r-project.org/web/packages/png/png.pdf – Chase
Sarebbe bene aggiungere un po 'di mancanza di trasparenza nei tuoi punti, quindi potresti vedere meglio la loro distribuzione. Come in una trama di densità. – Rodrigo
Dai un'occhiata a http://stackoverflow.com/a/42611002/15485 –