2015-04-21 6 views
8

Ich möchte die Dicke der in MATLAB geplotteten Linie genau steuern. Nicht nur 0,5, 1, 2, 3, ... Punkte, sondern z.B. 0,2 mm. Ist es möglich?Wie kann man die Linienstärke im MATLAB-Plot präzise steuern?

Im Export-Setup-Fenster gibt es ein benutzerdefiniertes Feld für Zeilenskalierung und minimale Zeilenbreite, das jedoch nicht funktioniert.

enter image description here

Beispielcode:

hf = figure; 
ha = axes; 
ha.Units = 'centimeters'; 

t = linspace(0,2*pi); 
hl = plot(t,sin(t),'Linewidth',0.1); 
axis tight 

saveas(hf,'test','pdf') 
+6

Kurze Antwort: es ist nicht möglich. Vorschlag: Export als Vektorgrafik und Anpassen der Linienbreite in der Nachbearbeitung. Ein anderer Vorschlag: Nun, Sie spezifizieren Punkte und Sie können die Größe der Figur in Pixeln sowie die Auflösung für den Export steuern. Sie könnten versuchen, einen Workaround dafür zu erstellen. – thewaywewalk

+1

Abhängig vom Rest Ihres Workflows, sollten Sie vielleicht ein anderes Tool verwenden - LaTeX-Benutzer haben TikZ als Option und das Matlab2tikz-Skript zum Austausch von Dateien ist beliebt: http://www.mathworks.com/matlabcentral/fileexchange/22022 -matlab2tikz-matlab2tikz Sie können auch benannte Parameter übergeben, die bei der Automatisierung helfen könnten http://tex.stackexchange.com/a/120151 – xenoclast

+0

Nach dieser offiziellen Dokumentation http://uk.mathworks.com/help/symbolic/ mupad_ref/linewidth.html Es sollte möglich sein, LineWidth = 0.3 * Einheit :: mm – Ludi

Antwort

4

Matlab verwendet die Standarddefinition von 1 Postscript-Point (oder "Desktop Publishing Point") = 1/72 Zoll.

(Sie können das leicht überprüfen, indem Sie eine Figur mit, sagen wir, eine Zeile mit ‚Linewidth‘ gleich 36. Exportieren Wenn Sie die Linie auf dem Papier gedruckt werden, dass ohne Skalierung, 1/2 Zoll breit sein wird)

also, wenn Sie eine Linie von 0,2 mm möchten, können Sie die Linienbreite auf 0.567 oder so eingestellt:

h = plot([0 0],[0 1]); 
set(h,'LineWidth',0.567); 

und wenn Sie möchten für alle Parzellen, die als Standardlinienbreite einzustellen:

set(0,'defaultlinelinewidth',0.567) 

für eine einzelne Sitzung oder in Ihre startup.m-Datei, um sie dauerhaft zu setzen.

Als Reaktion auf @ szymon-bęczkowski: ab 2014b scheint es einen Fehler in Matlab zu geben, der beim Export in EPS oder PDF die Linienbreite auf einen Minimalwert von 1 setzt. Siehe here für einen verwandten Fehler. Der 'Workaround' ist also so, dass man bei der Linienbreite> = 1 bleibt.

Auch wenn es dort anscheinend nicht funktioniert, empfehle ich dringend export_fig als eine Alternative zu Matlab's eingebauten Druckfunktionen.

+1

Funktioniert das tatsächlich? Ich weiß, dass ich alles unter 1 Punkt einstellen kann (siehe meinen Beispielcode, ich benutze 0,1), aber die Linie ist nicht dünner auf dem Ausgabeplot. –

+0

Funktioniert jetzt wie ein Charme (2105b): http://imgur.com/IeYzGpO –

+0

@ SzymonBęczkowski das ist toll zu hören. – Carlos