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

Panel verdeckt Achse und ist außerhalb der Axes

 

Joeh
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 06.04.11
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 24.06.2011, 15:21     Titel: Panel verdeckt Achse und ist außerhalb der Axes
  Antworten mit Zitat      
Hallo,

Folgendes Problem:
Meine Axes soll einen roten Hintergrund haben und einen grünen Vertikalen Streifen. Jetzt sollen werte geplottet werden und der Anzeigebereich soll sich mit gemäß der geplotteten Werte anpassen. Allerdings sollen die grünen Streifen ins unendliche gehen oder eben lang genug so, dass man das Ende nie sieht.

Hier mein bisheriger Ansatz sieht in etwa so aus:

Code:
my_plot=gca;
axis([0 1 0 0.2]);
set(my_plot,'Color',[1 0 0]);
hold on
fill([0.1, 0.15, 0.15, 0.1],[0, 0, 10, 10],'g','EdgeColor','none');
hold off
axis manual
hold on
for i=1:10
   plot (i/10, i/10, '+');
   axis([0, i/5, 0, i/5]);
   pause(1)
end
hold off


Leider gibt es dabei noch zwei Schwachstellen

1. In meinem GUI in dem das ganze laufen soll geht der grüne Balken über die axes hinaus. Die Balkenhöhe wie auch den Anzeigebereich nach jeder Messung anzupassen wäre leider nur recht umständlich möglich

2. das Panel überdeckt Teile der X- Achse

Hat Jemand eine Idee?
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: 24.06.2011, 18:09     Titel: Re: Panel verdeckt Achse und ist außerhalb der Axes
  Antworten mit Zitat      
Hallo Joeh,
Zitat:
1. In meinem GUI in dem das ganze laufen soll geht der grüne Balken über die axes hinaus.

Das verstehe ich nicht. Hilft es die Eigenschaft "Clipping" des FILL-Objekts auf 'on' zu setzen? Normalerweise ist dies aber aktiviert und das FILL-Objekt wird von der AXES begrenzt.

Zitat:
Die Balkenhöhe wie auch den Anzeigebereich nach jeder Messung anzupassen wäre leider nur recht umständlich möglich

Wieso ist das umständlich? Es muss einfach nur der YData-Wert entsprechend gesetzt werden. Das sollte in ein oder zwei Zeilen machbar sein.
Du kannst ein Objekt aber auch mit viel größeren YData-Werten plotten und die nicht-dokumentierte Eigenschaft 'YLimInclude' auf 'off' setzen, so dass das FILL-Objekt bei der Ermittlung der Y-Limits der AXES nicht berücksichtigt wird.

Zitat:
2. das Panel überdeckt Teile der X- Achse

Welches Panel?!

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 06.04.11
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 25.06.2011, 11:25     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine Hilfe! Deine Tipps bezüglich "Clipping" und "YLimInclude" bewirken im Commandwindow eingegeben genau das was sie sollen. (Bzw. Clipping ist dort wie du schon sagtest als default on)

Aber aus irgendeinem Grund hat beides in meiner GUI keinen Effekt wie du im angehängten Bild siehst (keine Fehlermeldung)! Woran könnte das liegen?

Umständlich ist das "manuelle" anpassen des Höhe des Fill-objects deshalb, da
1. Der das FILL-objekt nicht immer vorhanden ist
2. Mehrere verschiedene Funktionen zum plotten verwendet werden
3. Auch mehrere Messreihen gleichzeitig angezeigt werden sollen
-> ich muss in jeder „plot-Funktion“ prüfen on das Fill-objekt existiert und welcher Punkt der verschiedenen Messreihen der größte ist um danach ggf die Höhe des fill-objectes anzupassen

Da ist das von dir vorgeschlagene "YLimInclude" schon viel praktischer.

mit "Panel" meinte ich das Fill-object, da ich in einem anderen Post gelesen hatte, dass fill eigentlich nur ein Panel erzeugt (oder so ähnlich
Very Happy). Es geht also um die unteren blauen Kreise im Bild

AXES.JPG
 Beschreibung:

Download
 Dateiname:  AXES.JPG
 Dateigröße:  7.78 KB
 Heruntergeladen:  550 mal
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: 25.06.2011, 21:37     Titel:
  Antworten mit Zitat      
Hallo Joeh,

Zitat:
Aber aus irgendeinem Grund hat beides in meiner GUI keinen Effekt wie du im angehängten Bild siehst (keine Fehlermeldung)! Woran könnte das liegen?

Das kann ich nun beim besten Willen nicht erraten. Bitte poste den relevanten Code.

Ein FILL-Objekt ist etwas ganz anderes als ein Panel - siehe "help uipanel".
Das manuelle Anpassen ist eigentlich einfach: Man kann das FILL-Objekt immer erzeugen und es unsichtbar machen, indem man die X-Werte auf Inf setzt. Dann erzeugt man die Grafik und liest die von Matlab bestimmten Limits aus dem AXES-Objekt aus:
Code:

AxesH = axes('NextPlot', 'add');
FillH = fill(???)
plot(1:10, rand(1, 10));
drawnow;
YLimit = get(AxesH, 'YLim');

Nun hast Du hübsche Limits um die Y-Werte des FILL-Objekts anzupassen.

Aber 'YLimInclude' ist wirklich viel praktischer.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 06.04.11
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 26.06.2011, 12:01     Titel:
  Antworten mit Zitat      
Hallo Jan,

Gute Nachrichten! Das 'YLimInclude' läuft jetzt und ist wirklich eine super Sache. Habe nocheinmal eine Weile daran rum gebastelt und dann ging es. Aber warum ich es vorher im Command Window hinbekommen hatte und im GUI nicht kann ich leider echt nicht mehr sagen... Embarassed

Und bei der Sache mit dem Clipping habe ich auch eine heiße Spur. Der Fehler tritt nur auf wenn ich die AXES auf einem Panel habe. (Ja, dieses mal ist es wirklich ein Panel... Ich hatte vorher Panel und Patch durcheinander gebracht. Sorry!!!). Aber was ich dagegen machen kann weiß ich nicht. Und es ist leider recht wichtig, dass die Axes auf einem Panel ist.

Und warum die kleinen Schwarzen Strichlein der X-Achse verschwinden (Siehe Bild vorheriger Beitrag) weiß ich auch noch nicht. Aber das ist ja auch nicht soo schlimm

patch_problem.fig
 Beschreibung:

Download
 Dateiname:  patch_problem.fig
 Dateigröße:  4.02 KB
 Heruntergeladen:  325 mal
patch_problem.m
 Beschreibung:

Download
 Dateiname:  patch_problem.m
 Dateigröße:  3.38 KB
 Heruntergeladen:  325 mal
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: 26.06.2011, 21:31     Titel:
  Antworten mit Zitat      
Hallo Joeh,
Zitat:
Und warum die kleinen Schwarzen Strichlein der X-Achse verschwinden (Siehe Bild vorheriger Beitrag) weiß ich auch noch nicht.

Man kann die X-, Y-Ticks und Gitterlinien vor oder hinter den gezeichneten Objekten einfügen: Siehe:
Code:
axes('Layer', 'top')  % oder 'bottom'

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 06.04.11
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 27.06.2011, 15:33     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank! Jetzt lauft alles wie es soll!

Denn das Problem das das clipping bei der Axes auf dem Panel nicht läuft hat sich auch geklärt. Siehe http://www.mathworks.com/support/bugreports/260354
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.