WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

set(axes,'LineStyleOrder',1) ?

 

elchico
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2017, 20:37     Titel: set(axes,'LineStyleOrder',1) ?
  Antworten mit Zitat      
Hallo zusammen,

ich versuche seit ein paar Stunden vergebens, mein 'LineStyleOrder' beim zweiten laden von Daten wieder auf eins zu setzen.
Code:
function axes1_CreateFcn(hObject, eventdata, handles)
set(hObject,'YGrid','on','XMinorGrid','on','XGrid','on',...
    'LineWidth',1.5,...
    'YMinorTick','on',...
    'YScale','log',...
    'XMinorTick','on',...
    'XScale','log',...
    'ColorOrder',[0 0 0;1 0 0;0 0 1;0 0.501960813999176 0;1 0 1;0.501960813999176 0 0.501960813999176;0 0 0.627451002597809;1 0.501960813999176 0],...
    'FontWeight','bold',...
    'FontSize',12,...
    'FontName','Arial',...
    'LineStyleOrder','-|--|:',...
    'LineStyleOrderIndex',1);
box(hObject,'on');
hold(hObject,'on');



Hier läuft es folgendermaßen ab:
Ich habe 8 versch. Farben, welche durchlaufen werden (mit LineStyle 1 (-)). Sollte eine 9. Kurve mit reingeladen werden, so wird Farbe 1 aber LineStyle 2 (--) verwendet usw.

Lade ich aber nochmals 9 Kurven neu ein, so wird zwar wieder bei Farbe 1 begonnen (indem ich bei der Funktion "LoadPlot" den LineStyleOrderIndex wieder auf 1 setze), aber trotzdem wird alles mit LineStyle 2 (--) geplottet - und die 9. Kurve sogar mit LineStyle 3 (Smile.

Ich möchte aber, dass, wenn ich komplett neu Daten einlade, wieder mit Farbe 1 und LineStyle 1 begonnen wird ... Weiß jemand den passenden Aufruf?

Was nicht funktioniert:
- In meiner LoadFile Funktion den 'LineStyleOrderIndex' wieder auf eins zu setzen.
- In meiner LoadFile Funktion den 'LineStyleOrderIndex' einmal auf etwas anderes zu setzen und dann wieder zurück auf den ursprünglichen. Das geht sogar soweit, dass der Index bestehen bleibt. Das heißt, lade ich einen neuen Style ein (Neutral--), so würde der zweite vom neuen genutzt werden ...


Funktion LoadPlot (stark vereinfacht, da ewig lang):
Code:
%Clear Graph
cla;
h = findobj('type','line');
delete(h);
try
...

loglog(handles.axes1,Data.(electrode)(1:end,1,spectraNumber),Data.(electrode)(1:end,parameter,spectraNumber),'LineWidth',2);

....

guidata(hObject,handles);

 



die LoadFile-Funktion:
Code:

set(handles.axes1,'ColorOrderIndex',1);
%Hier habe ich versucht, den LineStyle nochmals neu aufzuspielen (war nur ein Versuch)
set(handles.axes1,'LineStyleOrder','-|--|.');
...

 



Während des Schreibens habe ich mir überlegt, dass man ja den LineStyleOrder pro Aufruf der LoadFile Funktion um eins verschieben könnte, sodass zwar der Index um eins verschoben wird, aber der StyleOrder eben auch. Aber das wäre ein ziemlich umständlicher Workaround. Gibt es hierfür keine richtige Lösung?

Danke! und LG
elchico
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 08:35     Titel: Re: set(axes,'LineStyleOrder',1) ?
  Antworten mit Zitat      
Hallo elchico,

Der LineStyleOrderIndex wird automatisch geändert, wenn der ColorOrderIndex das Limit der Colors übersteigt. Vielleicht geschieht das bei Dir. Du müsstest also den ColorOrderIndex auch setzen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2017, 12:27     Titel: Re: set(axes,'LineStyleOrder',1) ?
  Antworten mit Zitat      
Hallo Jan,

danke für die Antwort. Allerdings habe ich in meiner LoadFile-Funktion (s.o.) den ColorOrderIndex gesetzt (auf 1).

VG

[EDITED, Jan, Bitte kein Top-Quoting der gesamten vorhergehenden Nachricht - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 16:06     Titel: Re: set(axes,'LineStyleOrder',1) ?
  Antworten mit Zitat      
Hallo elchico,

Ich blicke bei dem teilweise gezeigten Code nicht durch. Es ist hilfreicher, ein lauffähiges Beispiel zu posten, welches das Problem reproduziert. Z.B.:
Code:
figure;
AxesH = axes('NextPlot', 'add', 'LineStyleOrder', '-|--', ...
             'ColorOrder', [1,0,0; 0,1,0; 0,0,1]);
LineH = plot(rand(10, 6));

pause(2);
delete(LineH);
set(AxesH, 'LineStyleOrderIndex', 1);
LineH = plot(rand(10, 1));

Hier wird zwar die LineStyleOrder auf 1 gesetzt, trotzdem wird gestrichelt gezeichnet. Das geschieht aber nicht, wenn vorher die ColorStyleOrder nicht am Limit war:
Code:
figure;
AxesH = axes('NextPlot', 'add', 'LineStyleOrder', '-|--', ...
             'ColorOrder', [1,0,0; 0,1,0; 0,0,1]);
LineH = plot(rand(10, 5));   % *5* Linien statt 6

pause(2);
delete(LineH);
set(AxesH, 'LineStyleOrderIndex', 1);
LineH = plot(rand(10, 1));

Oder eben:
Code:
set(AxesH, 'LineStyleOrderIndex', 1, ...
           'ColorOrderIndex', 1);

Hilft das? Du hast zwar "in der LoadFile-Funktion (s.o.) den ColorOrderIndex gesetzt (auf 1)", aber es ist nicht genau nachvollziehbar, wann das wo aufgerufen wird und wo dann der LineStyleOrderIndex gesetzt wird. Vielleicht hattest Du es ja zwischen durch bereits richtig geschrieben, und nur vergessen abzuspeichern vor dem Test-Lauf. Genau darum ist es hilfreich, Code zu untersuchen, der das Problem reproduziert.

Hilft das weiter?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2017, 17:59     Titel: Re:Re: set(axes,'LineStyleOrder',1) ?
  Antworten mit Zitat      
Hallo Jan,

erstmal Danke für deine Antwort.
Zweitens entschuldige bitte, dass ich erst jetzt schreibe. War jetzt einen knappen Monat nicht im Lande.

Drittens: Das hilft tatsächlich. Ich hatte zwar den 'LineStyleOrderIndex' auf 1 gesetzt, aber irgendwie wurde es nicht aufgerufen. Jetzt habe ich das an anderer Stelle eingefügt und jetzt geht es.
Wie dem auch sei, jetzt funktioniert es ja Wink

Danke schön.
VG
elchico
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.