Ich würde denken, dass dies auf das PostScript-Format zurückzuführen ist, und nichts, das geändert werden kann. Lassen Sie uns die Mathematik tun:
7.8MB ist etwas wie 7,8 * 1024 * 1024 = 8.178.892,8. Angenommen, Sie haben 400.000 Punkte in Ihrem Streudiagramm, bedeutet dies, dass Ihre Datei jedem Punkt in Ihrem Streudiagramm etwa 20 Byte zuweisen würde, wenn sich nichts anderes in Ihrer Datei befindet (d. H. Keine Legenden, keine Anmerkungen usw.).
Nun, ich bin kein Postscript-Experte, aber Blick auf den Ausgang test.ps
, verwendet der Befehl Kreise zeichnen in Postscript wie folgt aussieht:
[x] [y] o
wobei x und y die Koordinaten jedes Punktes sind . Da es sich um Float-Werte handelt, addieren sich die Informationen tatsächlich zu 15 Bytes, was meiner obigen Annahme nicht zu weit voraus ist.
Also, die Dateigröße wird durch die Art der PostScript-Datei verursacht, die ziemlich viele Informationen für jeden der 400.000 Punkte in Ihrem Streudiagramm speichert.
Sie können das Streudiagramm als gerastertes Bild speichern, wie in der Antwort von @AngusWilliams vorgeschlagen. Dies führt zu einer kleineren Dateigröße. Sie verlieren jedoch den Vorteil eines vektorbasierten Dateiformats: verlustfreie Skalierung bei jeder Auflösung.
Wenn Sie diese Vorteile von vektorbasierten Dateiformaten nicht benötigen, können Sie mit einem anderen Dateiformat wie .png
besser arbeiten, das das Bild normalerweise besser komprimiert als PostScript mit gerasterten Informationen.
Aber diese Lösung verliert alle Vorteile in erster Linie ein vektorbasiertes Format wie Postscript verwendet wird, nicht wahr? – Schmuddi
Dieser Ansatz rasterisiert nur die Punkte, den Text und den Vektor der Liniengrafik. Es ist wahr, dass Sie nicht beliebig zoomen können, aber ich denke, es muss ein Kompromiss zwischen dem Informationsgehalt der Grafik und ihrer Größe im Speicher bestehen. Für mich ist das oft ein nützlicher Kompromiss. –