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

Plot an axes übergeben

 

Lala888
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 27.04.2017, 14:55     Titel: Plot an axes übergeben
  Antworten mit Zitat      
Hallo Leute,

ich bin gerade dabei eine GUI ohne GUIDE zu erstellen und komme einfach nicht weiter. Bis jetzt habe ich einen Button der mir Dateien einliest, weiterverarbeitet und deren Daten in einer Listbox anzeigt. Dann gibt es noch zwei Buttons die mir jeweils einen plot erstellen, und zwei Achsen, die die jeweiligen plots durch betätigen der Buttons anzeigen sollen. Ich habe da schon alles mögliche probiert, aber die beste Lösung war bisher das beide plots in der zweiten Achse erscheinen.

Habt Ihr ne Idee wie ich die jeweiligen Achsen anspreche?

Das ist bisher mein Code:

Code:
% Create push button
hplot1 = uicontrol('parent', main, 'Style', 'pushbutton', 'String', 'Plot1',...
    'Units','normalized', 'Position', [.05 .54 .049 .03]);
set(hplot1, 'Callback', @plot1);

% Create push button
hplot2 = uicontrol('parent', main, 'Style', 'pushbutton', 'String', 'Plot2',...
    'Units','normalized', 'Position', [.1 .54 .049 .03]);
set(hplot2, 'Callback', @plot2);

% Create axes
axes1 = axes('Parent',main,'Position',[.2 .75 .7 .2]);

% Create axes
axes2 = axes('Parent',main,'Position',[.2 .5 .7 .2]);

Und die Callbacks für die zwei Buttons:

function plot1(hObject, value)
*Daten werden Verarbeitet
*Plot wird erstellt
plot( x1, y1, 'm');
hold on;
plot( x2, y2, 'k');

function plot2(hObject, value)
%genau wie function plot1


Ich hoffe Ihr könnt mir helfen
Liebe Grüße Lala

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2017, 15:31     Titel:
  Antworten mit Zitat      
Hallo,

bei plot kannst du das Koordinatensystem angeben, in dem geplottet werden soll, z.B.
Code:
plot(axes1, x, y)


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 28.04.2017, 09:22     Titel:
  Antworten mit Zitat      
Danke für die Antwort Smile

Das funktioniert für den Plot, aber nicht für die Einstellungen wie Achsenbeschriftungen ect, die durch betätigen des Pushbuttons generiert werden.
Wie kann ich denn diese Einstellungen mit übergeben?

Liebe Grüße
Lala
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

was machst du da genau?
Auch bei Befehlen wie xlabel kann das Koordinatensystem als erstes Argument übergeben werden.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 28.04.2017, 09:53     Titel:
  Antworten mit Zitat      
Im Callback vom Pushbutton Plot, wird der Plot und ylabel dazu generiert.
Hier ist der Code

Code:
function plot1(hObject, value)
% Mat file mit den einheiten der Kanäle wird geladen
load 'Einheiten';
% Index des angeklickten Kanals wird übergeben und ii genannt
ii=getappdata(0, 'selected_item');
% Array mit Kanalnamen wird übergeben
F=getappdata(0, 'F');
% Struct1 wird übergeben
S1=getappdata(0, 'S1');
% Struct2 wird übergeben
S2=getappdata(0, 'S2');
axes1=getappdata(0, 'axes1');
grid on;
zoom on;
title(F{ii}, 'interpreter', 'none');
xlabel('Zeit [s]', 'interpreter', 'none');
% y-Achsenbeschriftung
Pos=strmatch(F{ii}, Einheiten(:,1), 'exact');
E=Einheiten{Pos,2};
Messwert=F{ii};
Einheit=char(E);
ylabel([Messwert '  [' Einheit ']'], 'interpreter', 'none');

x1=S1.(F{ii})(:,1);
y1=S1.(F{ii})(:,2);
x2=S2.(F{ii})(:,1);
y2=S2.(F{ii})(:,2);

% Kanäle der beiden Messungen werden übereinander geplottet
plot(axes1, x1, y1, 'm');
hold on;
plot(axes1, x2, y2, 'k');


Der Code für den zweiten Pushbutton ist identisch, es gehen nur andere Daten rein, und geplottet wird in der zweiten axes. Das Funktioniert auch.

Beim ersten Plot wird nur der zweite Graph geplottet und die Achsenbeschriftungen landen bei der zweiten axes.

Was mache ich falsch?

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  41.49 KB
 Heruntergeladen:  421 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wie gesagt:
Zitat:
Auch bei Befehlen wie xlabel kann das Koordinatensystem als erstes Argument übergeben werden.


Beispielsweise:
Code:
xlabel(axes1, 'Zeit [s]', 'interpreter', 'none');


Das musst du halt bei jedem Befehl anpassen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 28.04.2017, 10:09     Titel:
  Antworten mit Zitat      
Ok, jetzt hab ichs verstanden Smile

Bei axes2 funktioniert das Wunderbar, nur bei axes1 erscheint immernoch nur ein plot und keine Achsenbeschriftungen. Aber das liegt dann wohl an was anderem da der Code für beide Callbacks identisch ist.

Vielen Dank für die Info

Lala
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.