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 Achsen in Axes in GUI

 

Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2012, 09:18     Titel: mehrere Achsen in Axes in GUI
  Antworten mit Zitat      
Hallo,

ich habe eine Problem bei der Darstellung mehrerer Datensätze in einem axes Fenster in einer GUI. Ich habe folgenden Code benutzt:

Code:
h11=line(Spalte1,Spalte2,'Color','r');
ax1 = gca;
set(ax1,'XColor','r','YColor','r')
ax2 = axes('Position',get(ax1,'Position'),...
           'XAxisLocation','top',...
           'YAxisLocation','right',...
           'Color','none',...
           'XColor','k','YColor','k');
h12=line(Spalte1,Spalte3,'Parent',ax2);


Dieser Code ist mehr oder weniger aus der Hilfe abgeschrieben. Allerdings funktioniert er nicht. Ich kriege die Ausgabe, die in Bild 1 angehangen ist. Wenn ich nun einen Zeile in den Axes-Eigenschaften ('Position',get(ax1,'Position')) entferne funktioniert es besser, aber immer noch nicht richtig, wie Bild 2 zeigt. Könnt ihr mir sagen, woran es liegt? Die Funktion ployy kann ich nicht nutzen, da ich später genau steuern will wieviele Graphen auf welchen Achsen geplottet werden.


edit by denny: Bitte die Code-Umgebung nutzen!

Bild2.jpg
 Beschreibung:

Download
 Dateiname:  Bild2.jpg
 Dateigröße:  56.83 KB
 Heruntergeladen:  628 mal
Bild1.jpg
 Beschreibung:

Download
 Dateiname:  Bild1.jpg
 Dateigröße:  41.05 KB
 Heruntergeladen:  659 mal


Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 08:31     Titel:
  Antworten mit Zitat      
Weiß keiner eine Antwort?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.05.2012, 11:33     Titel:
  Antworten mit Zitat      
Hallo

du willst eine Art PLOTYY nutzen?

Dann hast du etwas falsch übernommen,
weil wenn ich das Beispiel direkt in Command Window eingebe dann funktioniert:
Code:

Spalte1= sort(rand(100,1))
Spalte2= sort(rand(100,1))*20
Spalte3= sort(rand(100,1))*14000


h11=line(Spalte1,Spalte2,'Color','r');
ax1 = gca;
set(ax1,'XColor','r','YColor','r')
ax2 = axes('Position',get(ax1,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor','k','YColor','k');
h12=line(Spalte1,Spalte3,'Parent',ax2);
 


Die Screenshots bestätigen meine Vermutung. Da hast du eigene GUI gebaut.

Also ist die Frage was ist der Unterschied zw. dem Beispielcode und deinem Code. Ich kann leider dein Problem so nicht nachvollziehen.
Bitte deinen Code posten.

Also wie hast Axes in dein GUI eingebaut?
Sind die Daten denn in Graphik 1 und Graphik 2 auf gleich großen Wertebereich skaliert. Schaue deine Y Axes, Links hast nur 20 Werte, Rechts 14 Tausend. Stimmt das?
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 11:51     Titel:
  Antworten mit Zitat      
Also wenn ich meinen Code mit deinen Daten (Spalte 1, Spalte2 und Spalte 3) in das Kommando Fenster gebe funktioniert es auch. Nur in der GUI funktioniert es ja komischerweise nicht. Hier also mal mein kompletter Code:

Code:
function varargout = Konvergenz_Plot(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Konvergenz_Plot_OpeningFcn, ...
                   'gui_OutputFcn',  @Konvergenz_Plot_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end


function Konvergenz_Plot_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Konvergenz_Plot (see VARARGIN)

% Choose default command line output for Konvergenz_Plot
handles.output = hObject;
clc;
% Update handles structure
guidata(hObject, handles);

function varargout = Konvergenz_Plot_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


function pushbutton1_Callback(hObject, eventdata, handles)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einlesen der Datei
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%[filename, pathname] = uigetfile('*.dat', 'Pick a text file');
filename=1
if isequal(filename, 0)                     % Abfrage ob Datei gefunden
disp('User selected ''Cancel''')
else

pathname='########';
filename='########';

% Oeffnen der Datei und Schreiben der Daten
rawData1 = importdata(fullfile(pathname, filename));
[~,name] = fileparts(fullfile(pathname, filename));
newData1.(genvarname(name)) = rawData1;
vars = fieldnames(newData1);
for i = 1:length(vars)
    assignin('base', vars{i}, newData1.(vars{i}));
end

Iterationsschritt=rawData1(:,1);
Spalte2=rawData1(:,2);
Spalte3=rawData1(:,3);
Spalte4=rawData1(:,4);
Spalte5=rawData1(:,5);
Spalte6=rawData1(:,6);
Spalte7=rawData1(:,7);

% Plot
h11=line(Iterationsschritt,Spalte2,'Color','r');
ax1 = gca;
set(ax1,'XColor','r','YColor','r')
ax2 = axes('Position',get(ax1,'Position'),...
           'XAxisLocation','top',...
           'YAxisLocation','right',...
           'Color','none',...
           'XColor','k','YColor','k');
h12=line(Iterationsschritt,Spalte7,'Parent',ax2);

axes('Position',get(ax1,'Position'));




end


function pushbutton3_Callback(hObject, eventdata, handles)
close;




Ich habe auf beiden Y-Achsen gleich viele Werte. Der Code den ich jetzt gepostet habe ist der, der Bild 1 ergibt.


edit by denny: Bitte die Code-Umgebung verwenden!
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.05.2012, 12:19     Titel:
  Antworten mit Zitat      
Hallo

versuch mal in den Callback, vorher die Axes zu erzeugen:

Code:


function pushbutton1_Callback(hObject, eventdata, handles)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einlesen der Datei
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%[filename, pathname] = uigetfile('*.dat', 'Pick a text file');
filename = 1;
if isequal(filename, 0)                     % Abfrage ob Datei gefunden
   return;
end

pathname='########';
filename='########';

% Oeffnen der Datei und Schreiben der Daten
rawData1 = importdata(fullfile(pathname, filename));
[~,name] = fileparts(fullfile(pathname, filename));
newData1.(genvarname(name)) = rawData1;
vars = fieldnames(newData1);
for i = 1:length(vars)
   assignin('base', vars{i}, newData1.(vars{i}));
end

Iterationsschritt=rawData1(:,1);
Spalte2=rawData1(:,2);
Spalte3=rawData1(:,3);
Spalte4=rawData1(:,4);
Spalte5=rawData1(:,5);
Spalte6=rawData1(:,6);
Spalte7=rawData1(:,7);

% Plot
ax1 = axes('Parent',gcf);
h11 = line(Iterationsschritt,Spalte2,'Color','r','Parent',ax1);

set(ax1,'XColor','r','YColor','r')

ax2 = axes('Parent', gcf,...
   'Position',get(ax1,'Position'),...
   'XAxisLocation','top',...
   'YAxisLocation','right',...
   'Color','none',...
   'XColor','k','YColor','k');

h12 = line(Iterationsschritt,Spalte7,'Parent',ax2);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 13:49     Titel:
  Antworten mit Zitat      
Es scheint schon besser zu funktionieren, aber immernoch nicht richtig. Irgendwie wird das Feld größer oder er erzeugt die Daten nicht in meinem vorgegebenen Axes Feld. Habe mal ein Bild angehangen, wie es nun aussieht.

Bild.jpg
 Beschreibung:

Download
 Dateiname:  Bild.jpg
 Dateigröße:  59.15 KB
 Heruntergeladen:  581 mal
 
Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 13:58     Titel:
  Antworten mit Zitat      
Achso ich habe noch vergessen zu erwähnen, dass man sich zum Vergleich vielleicht das obere Bild 1 anschauen könnte, denn so groß ist eigentlich mein Axes-Feld nur.
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.05.2012, 14:38     Titel:
  Antworten mit Zitat      
Mathi hat Folgendes geschrieben:
Achso ich habe noch vergessen zu erwähnen, dass man sich zum Vergleich vielleicht das obere Bild 1 anschauen könnte, denn so groß ist eigentlich mein Axes-Feld nur.


Da du eigene GUI hast, musst du die Größe der Axes über Position-Eigenschaft manuell vorgeben. Oder Axes über GUIDE reinszeichen
Und dieses Handle nutzen.
Code:

ax1 = axes('Parent',gcf,'Position',[0.1 0.1 0.78 0.4]);



Zitat:
Es scheint schon besser zu funktionieren, aber immernoch nicht richtig. Irgendwie wird das Feld größer oder er erzeugt die Daten nicht in meinem vorgegebenen Axes Feld. Habe mal ein Bild angehangen, wie es nun aussieht.

Überhaupt nicht klar, was du damit meinst. ich sehe keinen Fehler
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 16:52     Titel:
  Antworten mit Zitat      
Super! Vielen Dank! Wenn ich das Axes Feld im Code erzeuge und nicht in der GUIDE dann funktioniert es. Keine Ahnung warum, aber Hauptsache es geht! Smile Danke euch!
 
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.