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

Mehrere einzelne Kurven in einem Diagramm zuschalten

 

Jonzi
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 28.09.10
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 05.11.2010, 17:33     Titel: Mehrere einzelne Kurven in einem Diagramm zuschalten
  Antworten mit Zitat      
Hallo @all,

ich habe folgende Frage.

Ich möchte in meiner GUI durch eine axes 16 Kurven anzeigen lassen. Diese 16 Kurven sind jeweils zu einem Button geschaltet.
Nun möchte ich das ich durch Klicken des jeweiligen Buttons die dazugehörige Kurve erscheint und es soll möglich sein auch andere Kurven in den einen Plot hinzuzufügen.
Zur verdeutlichung ein Bsp.:

Ich möchte nun die Kurve 1,3,12 anzeigen. Jetzt Drücke ich wie schon gesagt, meinen Buttons 1,3,12 und es sollte in der axes in meiner GUI ein plot mit den Kurven 1,3,12 dargestellt werden, falls ich jetzt aber noch die Kurve 15 darstellen möchte, sollte die auch in die schon generierte axes geschrieben werden.(Ich muss dazu sagen, jede Kurve hat einen eigenen festen y wert, deshalb können die sich nicht überschneiden)
Natürlich sollte es auch möglich sein wieder durch erneutes klicken des Buttons z.b die Kurve 12 zu enfernen und es sollte nur die anderen Kurven noch da sein!!!

KANN MIR BITTE JEMAND HELFEN oder HAT JEMAND TIPPS wie man es machen könnte!!

Wäre wirklich SUPER!!!

Gruß
Jonzi
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: 05.11.2010, 23:19     Titel: Re: Mehrere einzelne Kurven in einem Diagramm zuschalten
  Antworten mit Zitat      
Hallo Jonzi,

was hast Du denn bisher versucht?

Ein kleines Beispiel, vielleicht hilft es Dir ja:
Code:

FigH = figure;
AxesH = axes('NextPlot', 'add', ... % wie "hold('on')"
           'Parent', FigH);

CMap = jet(5);
LineH = zeros(1, 5);  % Pre-allocate
for i = 1:5
  LineH(i) = line(1:10, rand(1, 10), 'Color', CMap(i, :), ...
                         'Parent', AxesH);
  uicontrol(FigH, 'Style', 'ToggleButton', ...
     'String', sprintf('%d', i), ...
     'Units', 'pixels', ...
     'Position', [10 + (i-1)*30, 10, 24, 24], ...
     'Callback', {@myCallback, LineH(i)});
end

% ------------------------- 8< ---------------------
function myCallback(ObjH, EventData, LineH)

if strcmpi(get(LineH, 'Visible'), 'on')
  set(LineH, 'Visible', 'off');
else
  set(LineH, 'Visible', 'on');
end
% ------------------------- >8 ---------------------
 

Eigentlich wird die Liste der Line-Handles "LineH" nicht benötigt. Aber vielleicht hilft es Dir beim Einfügen neuer Linien.

In der FEX gibt eine "clickable legend": Man kann dort die Linien direkt in der Legende anklicken.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 28.09.10
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 10.11.2010, 10:13     Titel:
  Antworten mit Zitat      
Hey Jan,

sorry das ich erst so spät schreibe war leider verhindert.!!

Ich habe ehrlich gesagt noch nicht viel ausprobiert!nur was sehr einfaches:
Code:

plot3(Ch1data(:,1), Ch1data(:,3), Ch1data(:,2), '-')
plot3(Ch2data(:,1), Ch2data(:,3), Ch2data(:,2), '-')
plot3(Ch3data(:,1), Ch3data(:,3), Ch3data(:,2), '-')
plot3(Ch4data(:,1), Ch4data(:,3), Ch4data(:,2), '-')
plot3(Ch5data(:,1), Ch5data(:,3), Ch5data(:,2), '-')
plot3(Ch6data(:,1), Ch6data(:,3), Ch6data(:,2), '-')
plot3(Ch7data(:,1), Ch7data(:,3), Ch7data(:,2), '-')
plot3(Ch8data(:,1), Ch8data(:,3), Ch8data(:,2), '-')
plot3(Ch9data(:,1), Ch9data(:,3), Ch9data(:,2), '-')
plot3(Ch10data(:,1), Ch10data(:,3), Ch10data(:,2), '-')
plot3(Ch11data(:,1), Ch11data(:,3), Ch11data(:,2), '*')
plot3(Ch12data(:,1), Ch12data(:,3), Ch12data(:,2), '-')
plot3(Ch13data(:,1), Ch13data(:,3), Ch13data(:,2), '-')
plot3(Ch14data(:,1), Ch14data(:,3), Ch14data(:,2), '-')
plot3(Ch15data(:,1), Ch15data(:,3), Ch15data(:,2), '-')
plot3(Ch16data(:,1), Ch16data(:,3), Ch16data(:,2), '-')


die CH16data Daten werden davor eingelesen.

Ich dachte mir erst ich könnte dann immer durch handles mir die einzelnen plots holen, aber dafür muss ich immer die gui neu starten. Dies sollte nicht so sein, sondern es sollte einfach durch einen button klick des betreffenden channels die Kurve angezeigt werden oder wieder gelöscht werden, ohne das man die gui neustarten braucht!!

Ich denke das ich wahrscheinlich einen timer einsetzten muss!aber habe noch nie mit sowas gearbeitet und arbeite leider auch noch nicht sehr lange mit Matlab!!!

Danke für die Bemühungen!! Very Happy

Gruß

Jonzi
Very Happy
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 - 2025 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.