2011-05-09 12 views
15

Sembra che la creazione di grafica di qualità di pubblicazione con mma sia un'arte nera che risale a decenni. Sebbene le cose siano migliorate molto negli ultimi anni, è ancora difficile ottenere risultati coerenti durante l'esportazione in file. Il modo in cui sembra il risultato finale sembra in qualche modo dipendente dal formato (con EPS che funziona meglio nella mia esperienza).Esportazione di grafici per pubblicazioni: come ottenere spessori di linea coerenti negli elementi di stampa?

Molto spesso, le linee in cornici e segni di graduazione finiscono per essere troppo deboli nel file EPS, e quando si cerca di fare qualcosa come FrameStyle->AbsoluteThickness[2], è facile ottenere linee troppo spesse. Quindi, il mio approccio attuale prevede di prendere cinque parametri - tre spessori di linea (in FrameStyle, AxesStyle e PlotStyle), ImageSize e FontSize in BaseStyle - e modificarli casualmente fino a quando la trama esportata non sembra accettabile. Questo è in qualche modo insoddisfacente e richiede tempo.

Esiste un modo migliore e/o una prescrizione standard da seguire per ottenere trame equilibrate e di bell'aspetto?

Modifica: ecco un esempio. Sembra buono sullo schermo (vedi screenshot), ma esportalo in EPS e probabilmente vedrai due cose: (a) C'è un bug con l'incorporamento di font EPS: per me, l'epsilon all'interno della figura non incorpora correttamente a meno che non rimuovo la direttiva FontWeight->Normal. (b) Le linee frame/tick sono di colore grigio chiaro e 1 pixel di spessore. Se volessi ridurre questa cifra (ad esempio per posizionarla come inserto), la qualità verrebbe compromessa. Tuttavia, l'utilizzo di AbsoluteThickness[2] non funziona correttamente, quindi devo aumentare ImageSize. Ma poi i caratteri sono troppo piccoli e/o le linee nella trama sembrano troppo sottile, ecc, ecc

With[{exSubscript = "\[UpTee]", epsFontSize = 24, 
    xcoords = {0.63, 2.2}}, testInset = Style[Inset[Cell[TextData[Cell[ 
     BoxData[FormBox[SubscriptBox["\[Epsilon]", exSubscript], 
      TraditionalForm]]]]], xcoords, {Left, Baseline}], 
    FontWeight -> Normal, FontSize -> epsFontSize]; 
    ]; 
Show[Plot[10 x^2, {x, 0, 1}, PlotStyle -> Thick, Frame -> True, 
    PlotRange -> {-2, 8}, Epilog -> {testInset}], Axes -> {True, True}, 
AxesOrigin -> {0, 0}, AxesStyle -> Dashed, 
FrameLabel -> {"\[Lambda] [\[Mu]m]", "Re{\[Epsilon]}"}, 
BaseStyle -> {FontSize -> 22, FontWeight -> Plain, 
    FontFamily -> Helvetica}, ImageSize -> 500] 
Export["test.eps", %] 

Sample plot

Edit: Accettare risposta Szabolcs', ma Mr.Wizard dovrebbe essere dato credito per sottolineando il comportamento FontFamily -> Helvetica vs FontFamily -> "Helvetica" (che sembra un bug). Senza le virgolette, l'esportazione PDF è un non-starter a causa di font avvitati.

+0

@Leo: Sono d'accordo con rcollyer. Ho usato LS per i miei numeri di pubblicazione e escono sempre alla grande. Puoi consultare [alcuni] (http://stackoverflow.com/questions/5818888/how-to-make-a-grid-of-plots-with-a-single-pair-of-framelabels/5820813#5820813) [risposte] (http://stackoverflow.com/questions/5429204/is-there-an-equivalent-of-matlabs-subplot/5429802#5429802) qui che uso levelscheme, per avere un'idea di come appaiono i grafici. – abcd

+0

Interessante (e frustrante) che se esporto in PDF, i caratteri cambiano, ma se stampo il notebook su una stampante PDF, sembra giusto. –

+0

Se utilizzo 'FontFamily ->" Helvetica "' (le virgolette sono importanti) funziona. –

risposta

15

schermo vs stampa la visualizzazione

E 'difficile confrontare la linea spessori sullo schermo, soprattutto quando lo spessore visualizzata otterrebbe vicino a 1 pixel. Ho trovato che è meglio stampare cifre alle dimensioni finali della pubblicazione e verificarne la qualità in questo modo.

Utilizzare misure assolute

La maggior parte dei problemi che ho avuto con questo derivano dal fatto che Mathematica utilizza sia assoluto e relativo (per la dimensione trama) misurazioni. Per le figure che appariranno in stampa, è più facile usare le dimensioni assolute che non si adattano alla trama, in particolare per le dimensioni dei caratteri e per lo spessore della linea. In questo modo puoi avere una buona idea di come sarà il risultato in stampa (e sarà indipendente dalla dimensione della figura). I numeri che fornisci a Mathematica sono nei punti della stampante.

Esportazione

Infine, ho trovato che l'esportazione in EPS è meno affidabile di esportazione in PDF (ad esempio i caratteri potrebbero non essere incorporati, come lei ha ricordato), e Mathematica è in grado di conservare tutte le caratteristiche (ad esempio, l'opacità !) durante l'esportazione in EPS. Per i grafici 2D, di solito il PDF è una buona scelta. Tuttavia, c'è un bug durante l'esportazione di PDF e la specifica ImageSize in Export. La soluzione che uso è

cm = 72/2.54 (* centimetres *) 
Export["figure.pdf", Show[figure, ImageSize -> 7 cm]] (* 7 cm wide figure *) 

L'è possibile includere il risultato nel documento senza alcun ridimensionamento, e avrete le dimensioni dei caratteri coerenti e spessori di linea durante tutte le figure.

In sintesi, questo è più o meno funzionato per me:

  1. uso misurazioni assolute per le cose che hanno bisogno di essere coerenti tra figure in stampa
  2. esportazione in PDF, con la dimensione finale previsto e non ridimensionare il risultato prima di includerlo (ad es. non specificare una larghezza in LaTeX)
+1

Nelle versioni molto recenti di PDF e EPS supporta pienamente i colori dei vertici. Vedi [questo] (http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/f2327233ca2faa9f/2dad0f66979ad134) thread e [questo video (14 Mb)] (http: // research.microsoft.com/en-us/um/people/jiansun/videos/GMesh_336.wmv). –

+0

Buono a sapersi. Tuttavia, sfortunatamente l'esportazione EPS di Mathematica sembra avere ancora problemi con i font (incorporamento dei font?), Ad es. il \ [UpTee] dell'esempio non viene visualizzato correttamente qui. – Szabolcs

+1

Potresti essere interessato a [pensieri di Jens Nockel sull'argomento] (http://pages.uoregon.edu/noeckel/MathematicaGraphics.html#OutlineFonts). –

1

Guarderei da vicino a LevelScheme, che ho utilizzato per la grafica di qualità di pubblicazione.

5

Ho sostituito FontFamily -> "Helvetica" ed esportato in PDF. Apertura che in PDF Foxit Reader vedo questo:

enter image description here

Oltre zoom diverso (non so perché) sembra abbastanza simile al vostro rendering.

+0

Quando esporto in PDF, le mie linee sembrano molto più sottili; inoltre, i caratteri sembrano troppo sottili - parte del motivo per cui ho iniziato a utilizzare le esportazioni EPS o TIFF. –

+0

@Leo Che cosa usi per visualizzare il PDF? Hai provato Foxit Reader? Potresti caricare un PDF esportato per me per visualizzare e screen cap? –

+0

@ Mr.Wizard: Se insisti :) http://www.princeton.edu/~leoa/test.pdf Visto in Chrome o Acrobat, è molto più brutto delle screencaps che abbiamo postato in questo thread –

Problemi correlati