2010-11-23 7 views
9

Ich habe eine Reihe von Daten, die Ich mag würdeWie lege ich den Standard-Linienstyle für Diagramme in MATLAB fest?

temp=0.5*rand(500,10); 
[~,offset]=meshgrid(1:500,1:10); 
figure(101) 
plot(temp+offset') 

plotten Wie kann ich den Linienstil gesetzt sobald die Linienfarben durch einen Zyklus gewesen, um automatisch auf den nächsten Stil zu ändern?

Für dieses Beispiel möchte ich, dass die 8-10 Zeilen einen anderen Linienstil haben. Ich kann es manuell tun, aber ich möchte, dass Matlab es für mich macht, wenn ich irgendwo eine Standardoption einstellen kann.

Antwort

15

Ihre erste Neigung könnte sein, einfach die 'LineStyleOrder' property der Achsen zu ändern, bevor Sie Ihre Daten zeichnen. Leider werden bei High-Level-Plotfunktionen wie PLOT die 'LineStyleOrder' property der Achsen vor dem Plotten auf den Standardwert '-' zurückgesetzt. Eine Lösung ist change the default value, die von allen Achsenobjekten unter root level verwendet wird. Zum Beispiel:

set(0,'DefaultAxesLineStyleOrder',{'-',':'}); 

zunächst eine durchgezogene Linie verwenden, dann eine gepunktete Linie, und wiederholen Sie dann bei Bedarf wieder für jede Handlung. Beachten Sie, dass Sie auch eine benutzerdefinierte 'ColorOrder' property mit High-Level-Zeichenfunktionen verwenden können, indem Sie den Standardwert auch im Stammverzeichnis ändern. Im folgenden Beispiel wird es ändern, so PLOT Zyklen zwischen nur rot, grün und blau:

set(0,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 0 0 1]); 

Statt über verschiedene Linienstile von Sorgen, wäre eine andere Lösung für Ihr Problem sein, die Standardfarbe zu setzen, um mehr zu haben als nur 7 Farben.

Sobald Standardeigenschaftswerte für den Stamm festgelegt sind, bleiben sie so, bis MATLAB geschlossen wird. Beim erneuten Öffnen werden die Standardeigenschaftswerte auf ihre werkseitig definierten Werte zurückgesetzt. Befehle wie CLEAR setzen die Standardeigenschaften nicht auf ihre werkseitig definierten Werte zurück. Stattdessen sollten Sie die Standardeigenschaft Wert 'remove' gesetzt benutzerdefinierte Werte rückgängig zu machen, etwa so:

set(0,'DefaultAxesLineStyleOrder','remove'); %# Sets the default back to '-' 

Als weitere Alternative zur Änderung der Standardeigenschaften, die von alle Objekte Achsen, wenn Sie die NextPlot property ändern von eine individuelle Achsen zu allem außer'replace' können Sie dann die 'LineStyleOrder' oder 'ColorOrder' Eigenschaften zu was auch immer Sie wollen und PLOT werden sie nicht auf ihre Standardwerte zurückgesetzt. Zum Beispiel sollte das tun, was Sie wollen auch:

set(gca,'NextPlot','add','LineStyleOrder',{'-',':'}); 
plot(temp+offset'); 
+0

Also, wenn der OP den Stil Zyklus ' 'r -' will, 'g -', 'b -', 'r:', 'g : ',' b: '', sie könnten' 'ColorOrder' 'auf' [1 0 0; 0 1 0; 0 0 1] 'und LineStyleOrder zu' {'-', '-', '-', ':', ':', ':'} ', oder? – Jonas

+3

@Jonas: Eigentlich müssten sie nur LineStyleOrder auf '{'-', ':'}' setzen, da PLOT zuerst alle Farben einmal mit dem ersten Linienstil und dann wieder mit dem zweiten Linienstil durchläuft. Mit anderen Worten, Farben wechseln in einer inneren Schleife, Linienstil in einer äußeren Schleife. – gnovice

+0

Danke, dass du das für mich erledigt hast! – Jonas

Verwandte Themen