Problem 1:
Wenn ich N größer werden lasse, wir auch die erzeugte Datei Filename.pdf immer größer und das Erstellen der Datei dauert deutlich länger. Das ist schlecht, da N noch deutlich größer werden muss. Kann man das irgendwie anders lösen? Es muss aber als pdf gespeichert werden. Irgendwie eine schlechtere pdf-Auflösung oder so.
Problem 2:
Wie bekomme ich es hin, dass die vier Plots in maximaler, an die Seitengröße angepasste Größe erscheinen? Dabei soll das Format A4-Querformat sein.
Verfasst am: 27.10.2016, 12:24
Titel: Re: Plot als a4-pdf in bestimmter Qualität speichern
Hallo gomatlab,
Wenn Du diagramme mit vielen Datenpunkten hast, müssen die PDFs doch größer werden. Da die graphisches Elemente als Vektorgrafik gespeichert werden, sollte das allerdings nicht viel ausmachen. Reduzieren kann man die Daten nicht, denn dann würden ja die Linien nicht mehr vollständig dargestellt werden.
Wie groß ist denn ein typisches N? Es macht einen Unterschied, ob Du hier von 1e4 oder 1e9 Daten sprichst.
Die Diagramme kannst Du verteilen, wenn Du die Eigenschaften der
figure
entsprechend setzt: 'PaperPosition', 'PaperSize' etc. Suche mal danach in der Dokumentation von
figure
.
Zum Dateigrößenproblem:
Sowohl der PC als auch der Drucker können ja eh nur Pixel anzeigen und drucken. Sobald man genug Punkte hat um eine durchgehende Linie darzustellen braucht man ja nicht noch mehr in die Datei zu packen.
Der Code ist nur ein Beispiel, eigentlich geht es um einen 3D surface plot. Das Problem ist aber das gleiche. Es macht von der Darstellung einen Unterschied wieiviele Punkte ich nehme. Je nach Anzahl sieht die Fläche "glatt" oder "kantig" aus. Dass die Berechnung bei mehr Punkten länger dauert, ist klar. Aber warum die Datei immer größer wird und bei der Erzeugung länger dauert, leuchtet mir nicht wirklich ein. Wenn ich ein großes N wähle, den plot berechne und dann einen Screenshot mache und als pdf speichere ist die Datei um ein Vielfaches kleiner, die "Qualität" der Fläche ist aber genauso gut. Nur wenn ich direkt aus Octave als pdf speichere werden die Dateien eben riesig.
Zum Dateigrößenproblem:
Sowohl der PC als auch der Drucker können ja eh nur Pixel anzeigen und drucken. Sobald man genug Punkte hat um eine durchgehende Linie darzustellen braucht man ja nicht noch mehr in die Datei zu packen.
Für Pixel-Grafiken stimmt das nur bedingt. Denn die Auflösung am Monitor ist bei 72 oder 96 dpi, bei Apples Retina-Displays höher, bei Druckern aber bis zu 1200 dpi. Welche Anzahl von Pixeln wäre dann also geeignet?
Aber Matlab speichert die Grafiken in PDFs (sofern sie mit dem Painters-Renderer erstellt wurden) sowieso als Vektorgrafiken ab: Dann ist nur der Start- und Endpunkt jedes geraden Linien-Segments gespeichert und die Auflösung spielt gar keine Rolle. Man kann dann auch eibnen beliebigen Teil-Ausschnitt vergrößern ubnd hat immer noch scharfe Linien ohne Treppen-Effekte der Pixel.
Zitat:
Der Code ist nur ein Beispiel, eigentlich geht es um einen 3D surface plot. Das Problem ist aber das gleiche.
Nein, das ist ein grundsätzlich anderes Problem. Deshalb war der Beispiel-Code irreführend. Ein 3D-Surface-Plot wird nämlich als Default mit dem OpenGL-Renderer erzeugt, sodass beim Abspeichern Pixel-Grafiken verwendet werden. Hier spielt die Auflösung also doch eine Rolle.
Zitat:
... einen Screenshot mache und als pdf speichere ist die Datei um ein Vielfaches kleiner, die "Qualität" der Fläche ist aber genauso gut.
Ah, ein Screenshot. Das ist wieder etwas grundsätzlich anderes, denn hier werden die Bilder mit 72dpi (bzw. höher, siehe oben) abgespeichert. Das sieht auf einem Drucker aber schon pixelig aus.
Zitat:
Nur wenn ich direkt aus Octave als pdf speichere werden die Dateien eben riesig.
Aha, es geht nicht um Matlab, sondern Octave. Auch das macht einen Unterschied.
Bitte erkläre das Problem immer von Anfang an so präzise wie möglich. Code zu posten, der etwas anderes macht als der echte, raubt die Zeit der Antwortenden und damit auch Deine. Ich verschiebe die Frage in die Kategorie "Octave".
Gruß, Jan
Verschoben: 28.10.2016, 06:54 Uhr von Jan S Von Grafiken und Plots nach Octave-Forum
AndyydnaA
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2016, 09:11
Titel:
Also zuerst mal muss ich Jan in jedem Punkt recht geben.
Wenn du die "Auflösung" in einer Vektorgrafik herabsetzen möchtest, dann nimm einen Dezimationsfilter vor dem plotten, z.B. "decimate" in Octave.
Wenn du wirklich eine feste Ausflösung in pixels willst, dann mach ein png und binde das in ein pdf ein, geht auf GNU/Linux recht einfach mit gm convert, ggf. asl system aufruf aus Octave heraus.
Alle Vorteile einer Vektorgrafik, wie die Möglichkeit zum heran zoomen ohne pixelig zu werden, entfällt dann
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.