Verfasst am: 24.06.2011, 15:21
Titel: Panel verdeckt Achse und ist außerhalb der Axes
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([0100.2]);
set(my_plot,'Color',[100]);
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
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
Verfasst am: 24.06.2011, 18:09
Titel: Re: Panel verdeckt Achse und ist außerhalb der Axes
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.
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
). Es geht also um die unteren blauen Kreise im Bild
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:
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...
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
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
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.