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 'XData' und dann etwas drüber plotten

 

royi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2017, 21:32     Titel: set 'XData' und dann etwas drüber plotten
  Antworten mit Zitat      
Code:
axesHandle=  plot(handles.Axes1.handle,X, Y);
set(axesHandle,'XData', x2, 'YData', y2);

Jetzt ist die Frage wie Plotte ich ich etwas darüber? Hätte ich normal plot benutzt und dann hold on, könnte ich wieder mit plot was drüber legen. Aber wie kann ich nun was drüberlegen wenn ich die werte wie oben beschrieben mit set xdata gesetzt habe?

Mache ich das mit plot verschwindet der Plot davor den ich mit set gesetzt habe. Und line macht hier nicht das richtige.
Code:
plot(handles.axesHandle,[x1 x1],y)
line([x1 x1], [y]);


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.05.2017, 23:27     Titel:
  Antworten mit Zitat      
Hallo,

was versuchst du denn nun konkret?

Zitat:
axesHandle= plot(...)

Ich würde die Variable eher plotHandle nennen.

Zitat:
Hätte ich normal plot benutzt und dann hold on, könnte ich wieder mit plot was drüber legen.

Das sollte auch hier gehen. Die entscheidende Frage ist, wie du hold verwendest. Der Code legt nahe, dass du das versuchen solltest:
Code:
hold(handles.Axes1.handle, 'on')


Zitat:
Und line macht hier nicht das richtige.

Was ist "richtig", und was passiert stattdessen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
royi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2017, 00:38     Titel:
  Antworten mit Zitat      
Ich habe in einen Plot einen Graph geplotet. Über diesen graph möchte ich zwei senkrechte Linien an verschiedenen Stellen plotten. Ich gebe in einer Inputbox die Stelle an an welcher die Linie geplotet werden soll, also zwei Linien, zwei Inputboxen.
Wenn ich den Wert der Inputbox ändere möchte ich die alte Linie die aus dieser Inputbox hervorgeht löschen und an der neuen stelle plotten.

Zuerst habe ich das mit line versucht:
Code:
handleZurLinie=line([wertPosition wertPosition], y);
set(handleZurLinie, 'XData',[x x], 'YData', y);

Das funktioniert auch soweit gut das wenn ich in Inputbox eins die wert ändere und mit set die neue werte reinschreibe er die alte Linie löscht. Das Problem dabei ist nun wenn ich in Inputbox zwei für die zweite Linie die werte eintrag und mit handlerZurLinie2= line.... die Linie plotte verschwindet die andere Linie auch! Also ich kann keien zwei Linien gleichzeitig im plott haben. Ist das irgendwie möglich?

Mein zweiter Lösungsvorschlug war mit plot die Linien zu zeichnen.
if (~isempty(handleZurLinie2)) % wenns noch nicht existiert also noch nicht geplottet wurde, wird der else zweig benutzt mit dem plot der Linie.

Code:
   if (handleZurLinie2.XData(1) ~=wertPosition ) % Wenn das handle existiert wird überprüft ob die Linie an selber Position geplotet werden soll oder nicht. Falls nicht lösche ich die alte linite mit delete(handlezurlinie) sie verschwindet auch und plote neue Linie.
        delete(handleZurLinie2)
handleZurLinie2 = plot([wertPosition wertPosition], y)
    end
else
    hold(handles.zeitsignalOriginalAxes1, 'on')
    handleZurLinie2 = plot([wertPosition wertPosition], ylimit)    
end


Hierbei allerdings das selbe Problem, er löscht die zuvor erstellte Linie die ich in Inputbox eins die Stelle angegeben habe. ALso gebe in Inputbox eins die Stelle 10 ein dann plotet er bei 10 die Linie. Gebe ich nun in der Inputbox zwei 50 dann verschwindet die Linie bei 10 und erscheint bei 50. Ich möchte aber bei 10 und 50 die Linie haben.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2017, 09:14     Titel:
  Antworten mit Zitat      
Hallo,

mit delete sollte genau die eine Linie gelöscht werden, die dort hinterlegt ist.

Im bisher zur Verfügung gestellten Code kann ich kein Problem erkennen.

Bitte ein zusammenhängendes, reproduzierbares Beispiel posten.

Grüße,
Harald
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.