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

Variable in Subplot ploten

 

Ruhmen
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2011, 11:10     Titel: Variable in Subplot ploten
  Antworten mit Zitat      
Hallo miteinander

Ich weiss nun nicht mehr weiter.
Versuche schon seit längerem einen Variabelnwert in einem Subplot als Text auszugeben. Dabei sollten die Achsen und der Plothintergrund nicht sichtbar sein.
Habe es mit cla versucht, aber dann erscheint auch der Text nicht mehr.

Die Textausgabe mache ich folgendermassen:
Code:

subplot(3,2,6);
title('Energy Consumption')
text(0.5,0.5,(sprintf('%7.4f kWh', EC2)),'HorizontalAlign','center','FontSize',12);
 


Wenn aber der plot neu ausgeführt wird, wird der ausgegebene Text überschrieben, statt neu geplottet.

Kann mir da jemand weiterhelfen?

Grüsse
Ruhmen
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: 08.06.2011, 16:41     Titel: Re: Variable in Subplot ploten
  Antworten mit Zitat      
Hallo Ruhmen,

Was genau ist Deine Frage?
Du kannst das AXES-Objekt unsichtbar machen:
Code:
AxesH = subplot(3,2,6);
set(AxesH, 'Visible', 'off');
title('Energy Consumption')
TextH = text(0.5,0.5,(sprintf('%7.4f kWh', EC2)),'HorizontalAlignment','center','FontSize',12);


Zitat:
Wenn aber der plot neu ausgeführt wird, wird der ausgegebene Text überschrieben, statt neu geplottet.

Stimmt. Du kannst den Text so ersetzten:
Code:
set(TextH, 'String', 'neuer String');

Hilft das?

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2011, 18:27     Titel:
  Antworten mit Zitat      
Hallo Jan

Das mit den Axes hat super gekappt; Vielen Dank für deinen Input.

Bezgl. dem Überschreiben ist es so, dass ich mittels fmincon eine Optimierung mache. Bei jeder Iteration wird ein Plot ausgegeben. Ein Subplot davon ist die Variable EC2. Die Anzahl der Iterationen ist nicht bekannt.
So wie ich es verstanden habe, ersetzt 'neue String' den String von TextH. Das geschieht aber nur einmal.
Ist es vielleicht irgendwie Bei jeder Iteration den Plot der Variablen zu ersetzen?

Beste Grüsse und nochmals vielen Dank,
Ruhmen
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: 08.06.2011, 21:31     Titel:
  Antworten mit Zitat      
Hallo Ruhmen,

Zitat:
So wie ich es verstanden habe, ersetzt 'neue String' den String von TextH. Das geschieht aber nur einmal.

Was genau geschieht nur einmal?

Code:

Axes1 = subplot(1, 3, 1);
Axes2 = subplot(1, 3, 2);
Axes3 = subplot(1, 3, 3);
TextH = text(0.5, 0.5, 'Hallo', 'HorizontalAlignment', 'center');
LineH = line(1:10, 1:10, 'Parent', Axes3);
for i = 1:10
   pause(0.5);
   plot(1:10, rand(1, 10), 'Parent', Axes1);
   set(TextH, 'String', datestr(now, 0));
   set(LineH, 'YData', rand(1, 10));
end

Hilft Dir das weiter?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ruhmen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2011, 23:41     Titel:
  Antworten mit Zitat      
Hallo Jan

Danke für deine Hilfe!

Es ist eine super Sache, blos mein Problem liegt darin, dass die Funktion mit dem Subplot immer wieder aufgerufen wird. Dann wird der Text dennoch überschrieben, wenn man wieder in die Funktion mit dem Plot kommt.
Wenn ich die ganze figure jedes Mal schliesse, dann dauert es viel zulange, weil ich dann noch eine pause hineinschieben müsste, damit man die Plots überhaupt sieht.

Ich habe es nun folgendermassen gelöst:
Zuerst habe ich eine globale Variable eingeführt.
Code:


Anschliessend mache ich einen kleinen Umweg, indem ich das Objekt mit der globalen Variable lösche, und erst dann den Plot durchführe. Da die Variable global ist, bleibt sie bis zum nächsten Aufruf vorhanden, und wird erst dann überschrieben.
Code:
delete(TextH)
TextH = text(0.5,0.5,(sprintf('%7.4f kWh', EC2)),'HorizontalAlignment','center','FontSize',12);


Somit bleibt der Text sozusagen im Subplot, bis neu geplotet wird.

Problem gelöst.

Danke für die Denkanstösse.

Gruss
Ruhmen
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: 10.06.2011, 01:15     Titel:
  Antworten mit Zitat      
Hallo Ruhmen,

Globale Variablen sind immer ein Ansatzpunkt für unerwartete und schwer auffindbare Bugs. Wie wäre es so:

Code:
function PlotFcn(Data1, Text2)
persistent LineH TextH

if nargin == 0   % cleanup for call without arguments
  delete(LineH);
  delete(TextH);
  LineH = [];
  TextH = [];
  return;
end

if isempty(LineH)  % First time: create the objects
  Axes1 = subplot(1, 2, 1);
  Axes2 = subplot(1, 2, 2);

  LineH = line(1:10, Data1, 'Parent', Axes3);
  TextH = text(0.5, 0.5, Text2, 'HorizontalAlignment', 'center', ...
                       'Parent', Axes2);

else  % Update the data only:
   set(TextH, 'String', datestr(now, 0));
   set(LineH, 'YData', rand(1, 10));
end

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
.





 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.