Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:


Studierende:
Abschlussarbeit - Entwicklung eines Werkzeuges in Matlab zur automatisierten Bedatung einer NOx-Katalysatordiagnose
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Nürnberg

Praktikant Toolentwicklung Matlab (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Praktikant Modeling und Simulation für Hochvolt Batterien im Hybridfahrzeug (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit (Master) Empfangsdiversität in 5G OTA Testsystemen
Branche: Mess-, Regel-, Automatisierungstechnik, Telekommunikation, Nachrichtentechnik
ROHDE & SCHWARZ GmbH & Co. KG - München

Studentische Mitarbeit - Sensoren und Aktoren, Bauteilabsicherung und Versuchsteilemanagement
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - München

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

set(axes,'LineStyleOrder',1) ?

 

elchico
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2017, 21: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: 10.101
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 09: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-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2017, 13: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: 10.101
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 17: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
 
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.