2015-04-23 14 views
7

Patches in Matlab sind aus einzelnen Dreiecken zusammengeklebt. Ihre Ränder sind in der Regel nicht sichtbar, aber wenn ich die Figur in einem Vektorgrafikformat exportieren können sie deutlich zu erkennen (nicht das ganze Bild wird gezeigt, nur einen gezoomten in Abschnitt)MATLAB: Kanten von Patches nach dem Export als Vektorgrafiken sichtbar

edges of individual triangles

-Code zu erzeugen, diese MWE war:

xx = [0:1:100, 100:-1:0]; 
yy = [zeros(1,101), ones(1,101)]; 
p1 = patch(xx,yy,'b'); 
print('testPatch','-dpdf','-painters') 

Alternative Funktion fill die gleiche verhält. Gibt es eine Möglichkeit, diesen Fehler zu vermeiden, oder muss ich in diesem Fall mit Bitmaps leben?

BEARBEITEN: Eine Abhilfe besteht darin, den Bereich auszubrüten, anstatt ihn zu füllen. Das ist natürlich nicht immer möglich, aber in meinem Fall funktionierte es gut und ich konnte bei Vektorgrafiken bleiben. Die entsprechende FEX-Einreichung ist http://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill

+0

Ich bin nicht sicher, was das verursacht, aber ich habe ähnliches Verhalten beim Exportieren von Plots mit kreisförmigen Markierungen beobachtet. Die kreisförmigen Markierungen enden wie fleckige Polygone, die aus mehreren Dreiecken bestehen. –

+1

Ich denke, dass das Problem, das Sie beschreiben, eine einfache Lösung hat: Verwenden Sie nicht 'o' als Markertyp, sondern '.'. Das hat mir, soweit ich mich erinnern kann, geholfen. – FliegenderZirkus

+1

Ich werde nie müde werden, 'export_fig' von Matlab FEX zu empfehlen. Es macht einen erstaunlichen Job, Zahlen zu exportieren, viel besser als Maltab selbst. Versuch es. –

Antwort

0

plot2svg ermöglicht das Erstellen von Vektorgrafiken (SVGs) mit ungebrochenen Patches. Ich würde auch für export_fig Updates dran bleiben, es scheint, dass Yair Altman working on this issue ist. Ich würde nicht auf eine Lösung von The Mathworks warten.

0

Verstreute Vektorgraphikausgabe (Scheiben, Dreiecke, Rechtecke statt gemeinsamer Objekte) ist eine der geheimen Funktionen nach R2014b Grafik-Engine-Update.

Ich konnte diese Dreiecke zusammen mit folgenden Python-Skript, das Systemaufruf von Inkscape https://github.com/Sbte/fix_matlab_eps verwendet, verbinden. Aber das ist eine Problemumgehung, die für einfache Plots funktioniert. Dies ist keine Lösung.

Verwenden Sie entweder Raster-Ausgabe, oder speichern Sie Ihre Daten und verwenden Sie Python Matplot-Software.