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

Zoom in Plot mit Slider synchronisieren

 

atzplzw
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2008, 02:52     Titel: Zoom in Plot mit Slider synchronisieren
  Antworten mit Zitat      
Hallo!

Ich habe einen normalen 2d plot, darunter einen Slider und eine Toolbar mit den Zoom +/- und Pan Icons erstellt.

Nun möchte ich gerne wenn ich in den Plot zoome (mit dem Tool aus der Toolbar), dass der Slider an die "richtige" Stelle springt. Weiterhin soll natürlich der Slider den Plot nach links und rechts bewegen.

Was ich bisher habe ist, dass ich von Plot die Werte 'Min' & 'Max' auslese und die beim Slider setze. Dann kann ich mit
Code:
set(handles.Scrollbar, 'Value', x);

den Slider an die richtige Stelle x setzen. Und mit 'Sliderstep' auch die Sprungweite angeben.
Nur wie lese ich den "ersten angezeigten" X Wert vom Plot aus?
Also ich könnte ja z.B. bei 50 - 100 reinzommen.

Weiterhin müsste ich dann auch eine Callback Funktion erstellen, wenn die Maus bei Zoom In losgelassen wird. Das wird wohl Off Callback im Guide sein.
In dieser müsste ich dann X wieder auslesen und den Slider setzen.


Auf der anderen Seite muss ich die Slider Callback Function nutzen um den Plot "weiterzufahren". Dazu müsste ich X irgendwie festlegen können!


Hat das alles mit der Camera zu tun?


Danke für die Tipps!
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 25.06.2008, 11:35     Titel:
  Antworten mit Zitat      
Zitat:
Nur wie lese ich den "ersten angezeigten" X Wert vom Plot aus?

In dem Du die Eigenschaft "XLIM" (evtl. auch YLIM) ausliest.
>> get(gca,'XLim')

Man kann die Xlim- und Ylim-Eigenschaft auch setzen. Das würdest Du brauchen, wenn Du den Slider bewegst und die Axes entsprechend anpassen willst.

Zitat:
Weiterhin müsste ich dann auch eine Callback Funktion erstellen, wenn die Maus bei Zoom In losgelassen wird.

Die Dokumentation zum Befehl ZOOM nachschlagen:

% ActionPostCallback <function_handle>
% Set this callback to listen to when a zoom operation has finished.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
atzplzw
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2008, 02:06     Titel:
  Antworten mit Zitat      
Super danke für deine Antwort!

Ich werd das gleich mal ausprobieren...
Private Nachricht senden Benutzer-Profile anzeigen
 
atzplzw
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2008, 12:46     Titel:
  Antworten mit Zitat      
Hab das nun alles hinbekommen, aber der Slider geht immer je nach Zoom Faktor übers Ziel hinaus!

Angenommen ich hab einen Graph von X 0 - 100. Im Slider Callback mache ich folgendes:

Code:

SVal = get(hObject,'Value');
XLim = get(handles.Axes, 'XLim');
XVal = XLim(2) - XLim(1);

XLim = [SVal SVal+XVal];
set(handles.Axes, 'XLim', XLim);
 


Also ich hole den Value vom Slider. Der ist natürlich am Ende 100. Wenn ich jetzt den Zoomfaktor mit reinnehme komme ich bei XLim auf 150. Das ist falsch, denn ich will ja nur von 0 - 100 scrollen.

Es kommt mir vor als ob das mit dem Slider ganz falsch ist:
Lege ich folgendes fest:

Code:

set(handles.Scrollbar, 'Min', 0, 'Max', 100, 'SliderStep', [0.05 0.5]);
 


Dann kann ich 3mal auf die Sliderleiste klicken bis er am "Ende" (also ganz rechts) ist. Das sollte ja aber nicht sein, denn ich habe den Step als 50 % angegeben ????


Irgendwie verstehe ich nicht, wie ich den Zoomfaktor in das ganze richtig mit einbauen kann.
Weiß jemand eine Lösung?
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.