2013-03-26 2 views
5

Sto cercando di rendere colorbar, così come le mappe raster, in R, e le cifre di output danno linee antiestetiche in loro quando esportati in pdf.pdf di figura in R ha linee bianche antiestetiche in esso

Questo è il codice per generare una barra di colore. Si guarda bene quando lo si esegue in R:

color.bar <- function(lut, min, max=-min, nticks=11, ticks=seq(min, max, len=nticks), title='') { 
    scale = (length(lut)-1)/(max-min) 

    plot(c(0,10), c(min,max), type='n', bty='n', xaxt='n', xlab='', yaxt='n', ylab='', main=title) 
    axis(4, ticks, las=1) 
    for (i in 1:(length(lut)-1)) { 
    y = (i-1)/scale + min 
    rect(0,y,10,y+1/scale, col=lut[i], border=NA) 
    } 
} 

par(mfrow=c(2,1)) 
par(mar=c(3,0,3,2.5)) 
pal = colorRampPalette(c("red","yellow")) 
neg = pal(100) 
pal = colorRampPalette(c("yellow","darkgreen")) 
pos = pal(50) 
color.bar(c(neg,pos),min=-75,max=50,ticks=c(-75,-50,-25,0,25,50)) 
color.bar(colorRampPalette(c("goldenrod","blue"))(25),min=0,max=1) 
par(mar=c(5.1,4.1,4.1,2.1)) 
    dev.copy2pdf(file = "colorbar_wood.pdf", height = 8, width = 1) 
pdf("colorbar_wood.pdf",width=1,height=8) 
par(mfrow=c(2,1)) 
par(mar=c(3,0,3,2.5)) 
pal = colorRampPalette(c("red","yellow")) 
neg = pal(100) 
pal = colorRampPalette(c("yellow","darkgreen")) 
pos = pal(50) 
color.bar(c(neg,pos),min=-75,max=50,ticks=c(-75,-50,-25,0,25,50)) 
color.bar(colorRampPalette(c("goldenrod","blue"))(25),min=0,max=1) 
par(mar=c(5.1,4.1,4.1,2.1)) 
dev.off() 

Ed ecco quello che ottengo come un pdf:

link

ho bisogno di ottenere questo fino alla qualità pubblicazione. Qualche idea su come risolvere?

+1

try 'rasterImage' – baptiste

+0

Il tuo pdf sembra ottimo sul mio computer. –

risposta

5

Questo è sempre un problema con il software utilizzato per il rendering del PDF, non con R, e si verifica a causa di funzionalità come l'anti-aliasing e altre operazioni di rendering eseguite dal PDF Viewer per visualizzare il PDF.

Questo è discusso in ?pdf, in particolare

Note: 

    If you see problems with PDF output, do remember that the problem 
    is much more likely to be in your viewer than in R. Try another 
    viewer if possible. Symptoms for which the viewer has been at 
    fault are apparent grids on image plots (turn off graphics 
    anti-aliasing in your viewer if you can) and missing or incorrect 
    glyphs in text (viewers silently doing font substitution). 

    Unfortunately the default viewers on most Linux and Mac OS X 
    systems have these problems, and no obvious way to turn off 
    graphics anti-aliasing. 

    .... 

ho visto solo il tuo PDF in due diversi visualizzatori PDF su Linux (Evince e Okular) e il grado in cui questi manufatti colpiti il ​​file era diversa tra i due spettatori, con Okular che produce meno artefatti sul rosso-verde e nessuno su quello blu-giallo. In quanto tale sembra essere un problema con la visualizzazione del PDF e non qualcosa con R. La tua figura dovrebbe quindi essere di qualità di pubblicazione.

+0

Wow, grazie! Evince, tuttavia, rimane ancora meglio per quasi tutto il resto. –