Kann Transparenz mit PostScript / EPS verwendet werden?

8

Ich versuche, ein R-Plot als EPS-Datei zu speichern, aber ich habe ein Problem mit der folgenden Komponente des Plots - dem grau-transparenten Polygon (transparentes Schwarz = grauer Effekt):

%Vor%

Diese Codezeile funktioniert einwandfrei, wenn Sie das Plot als PDF, aber nicht als EPS speichern. Sieht aus, als würde EPS keine Transparenz unterstützen? Welche andere Wahl hätte ich?

Hier ist der Code für die vollständige Handlung:

%Vor%     
Oposum 28.03.2015, 19:41
quelle

3 Antworten

9

Obwohl das EPS-Format nicht semi-transparent unterstützt, ist es immer noch möglich, cairo_ps() zu verwenden, so dass halbtransparente Bereiche automatisch gerastert werden und die Auflösung, mit der dies geschieht, mit dem Argument% co_de gesteuert werden kann %:

%Vor%

Alle nicht-halbtransparenten Bereiche bleiben dann schön als Vektorgrafik erhalten.

Oder noch kürzer können Sie auch verwenden:

%Vor%     
Tom Wenseleers 13.07.2015, 10:13
quelle
8

Das PostScript-Grafikmodell selbst unterstützt überhaupt keine allgemeine Transparenz von Seitenelementen. (Daher ist EPS auch nicht möglich.) PostScript-Farben sind alle vollständig < em> undurchsichtig .

Ein Objekt, das über einem anderen Objekt gezeichnet wird, überschreibt alle unteren Objekte und bedeckt sie mit einer eigenen Farbe, die keinen Platz für transparente Effekte lässt. (Wenn Sie etwas sehen, das aussieht wie Transparenz-Overlays in einem PostScript-Viewer oder -Ausdruck, dann wurde das nur ememitiert Transparenz durch Abflachen der beiden ( oder mehr) entsprechende Objekte in einem einzigen gerasterten Bereich, der die Illusion von Transparenz erzeugt.)

Das PDF-Grafikmodell basiert auf PostScript, erweitert es jedoch um verschiedene Aspekte und fügt einige neue Funktionen hinzu. Eine davon ist echte Transparenz für vollständige Objekte.

Nachdem Adobe die PDF-Datei transparenter gemacht hat, wurde auch eine Erweiterung [1] für die vorhandene PostScript-Sprache erstellt, die Code in PS-Programme einfügen kann, wodurch Transparenz geschaffen wird für PDFs erstellt von dieses PostScript via Distiller. Beim Rendern auf dem Bildschirm oder beim Drucken auf Papier mit demselben Original-PostScript, das denselben Code enthält, erscheint diese zusätzliche Transparenz jedoch nicht, und das oberste (transparent im PDF) -Objekt würde immer die unteren überschreiben, wenn es direkt in PostScript verwendet wird.

>
  

Welche andere Wahl hätte ich?

Verschiedenes:

  1. Verwenden Sie nur PDF. Verwenden Sie kein EPS.

  2. Wenn Sie müssen EPS verwenden, verwenden Sie einen zweistufigen Prozess:

    • Erstellen Sie zuerst das PDF.
    • Konvertieren Sie dann von der (transparenteraktivierten) PDF-Datei in EPS, 'flattening' die transparenten Elemente in gerasterte Bereiche, die den gewünschten Transparenzeffekt emulieren.

[1] Der Name dieser Erweiterung heißt pdfmark . Mit Hilfe des pdfmark -Operators können Sie dem PostScript-Code auch andere Funktionen hinzufügen, die nur beim Brennen dieses PostScript in PDF zum Tragen kommen: Anmerkungen, interaktive Formularfelder und Schaltflächen, Metadaten, Hyperlinks und mehr. Alle diese Elemente haben keine Auswirkungen auf das direkte PostScript-Rendering auf dem Bildschirm oder auf Papierabzügen.

    
Kurt Pfeifle 29.03.2015 00:49
quelle
0

Statt aus transparentem schwarz grau machen, empfehle ich die gray.colors() Funktion in R die Grautöne zu erzeugen, die Sie benötigen. Dann erhalten Sie das gewünschte Aussehen in Ihrer .eps-Datei ohne Probleme.

    
safelyanonymous 08.08.2017 12:51
quelle

Tags und Links