Arbeiten mit grafischen Objekten
Grafische Objekte
Grafische Objekte sind die grundlegenden Elemente, die zum Anzeigen von Diagrammen verwendet werden. Diese Objekte sind in einer Hierarchie angeordnet, die im folgenden Diagramm widergespiegelt wird.
Wenn Sie eine Plotfunktion aufrufen, erstellt MATLAB® das Diagramm mithilfe verschiedener grafischer Objekte, wie zum Beispiel einem Abbildungsfenster, Achsen, Linien, Text usw. Jedes Objekt verfügt über fest definierte Eigenschaften, die Sie verwenden können, um Verhalten und Aussehen des Diagramms zu steuern.
Beispielsweise erstellt die folgende Anweisung ein Balkendiagramm aus den Daten in der Variablen y und legt Eigenschaften fest, mit denen das Aussehen der Balken definiert wird:
y = [75 91 105 123.5 131 150 179 203 226 249 281.5]; bar(y,'FaceColor','green','EdgeColor','black','LineWidth',1.5)
Häufige grafischen Objekte
Wenn Sie eine Funktion zum Erstellen eines Diagramms aufrufen, erstellt MATLAB eine Hierarchie der grafischen Objekte. Wenn Sie zum Beispiel die Funktion plot
aufrufen, werden die folgenden grafischen Objekte erstellt:
Abbildung – Fenster, das Achsen, Symbolleisten, Menüs usw. enthält.
Achsen – Koordinatensystem, das das Objekt enthält, mit dem die Daten dargestellt werden.
Linie – Linien, die den Wert der Daten darstellen, die an die Funktion
plot
übergeben wurden.Text – Beschriftungen für Achsenteilstriche sowie optionale Titel und Anmerkungen.
Verschiedene Diagrammtypen verwenden unterschiedliche Objekte zur Darstellung von Daten. Da es zahlreiche Diagrammtypen gibt, stehen auch die unterschiedlichsten Datenobjekte zur Verfügung. Einige Objekte sind eher allgemeiner Natur, zum Beispiel Linien und Rechtecke, während manche hochspezialisiert sind, zum Beispiel Fehlerbalken, Farbbalken und Legenden.
Zugriff auf Objekteigenschaften
Plotfunktionen können die Objekte zurückgeben, die zum Erstellen des Diagramms verwendet wurden. Beispielsweise erstellen die folgenden Anweisungen ein Diagramm und geben das Linienobjekt zurück, das von der Funktion plot
erstellt wurde:
x = 1:10; y = x.^3; h = plot(x,y);
Verwenden Sie h
, um die Eigenschaften des Linienobjekts festzulegen. Beispielsweise können Sie die Eigenschaft Color
des Objekts festlegen.
h.Color = 'red';
Sie können die Linieneigenschaften auch angeben, wenn Sie die Plotfunktion aufrufen.
h = plot(x,y,'Color','red');
Sie können die Linieneigenschaften abfragen, um den aktuellen Wert anzuzeigen:
h.LineWidth
ans = 0.5000
Suchen der Eigenschaften eines Objekts
Geben Sie zum Anzeigen der Eigenschaften eines Objekts Folgendes ein:
get(h)
MATLAB gibt eine Liste der Eigenschaften des Objekts mit den aktuellen Werten zurück.
Zum Anzeigen der Eigenschaften eines Objekts mit Informationen zu möglichen Werten geben Sie Folgendes ein:
set(h)
Festlegen von Objekteigenschaften
Mithilfe der Funktion set
können Sie mehrere Eigenschaften auf einmal festlegen.
Festlegen der Eigenschaften bestehender Objekte
Wenn Sie identische Eigenschaften mehrerer Objekte auf denselben Wert festlegen möchten, verwenden Sie die Funktion set
.
Beispielsweise wird mit den folgenden Anweisungen eine 5x5-Matrix (mit der fünf Linienobjekte – eines pro Spalte – erstellt werden) geplottet und anschließend die Eigenschaft Marker
als rechteckig und die Eigenschaft MarkerFaceColor
als grün festgelegt.
y = magic(5); h = plot(y); set(h,'Marker','s','MarkerFaceColor','g')
In diesem Fall ist h
ein Vektor, der fünf Handles enthält – eines für jede der fünf Linien im Diagramm. Die set
Anweisung legt die Marker
und MarkerFaceColor
Eigenschaften aller Linien auf denselben Wert fest.
Erstellen Sie einen Index im Handle-Array, um einen Eigenschaftenwert für ein Objekt festzulegen:
h(1).LineWidth = 2;
Festlegen mehrerer Eigenschaftenwerte
Wenn Sie die Eigenschaften jeder Linie auf einen anderen Wert festlegen möchten, können Sie mithilfe von Zellenarrays alle Daten speichern und sie an den Befehl set
übergeben. Beispielsweise können sie wie folgt einen Plot erstellen und die Linienhandles speichern:
figure y = magic(5); h = plot(y);
Angenommen, Sie möchten den einzelnen Linien verschiedene Markierungen hinzufügen und der Markierungsfläche dieselbe Farbe zuweisen wie der Linie. Hierzu müssen Sie zwei Zellenarrays definieren – eines, das die Eigenschaftennamen enthält, und ein weiteres, das die gewünschten Werte der Eigenschaften enthält.
Das Zellenarray prop_name
enthält zwei Elemente:
prop_name(1) = {'Marker'}; prop_name(2) = {'MarkerFaceColor'};
Das Zellenarray prop_values
enthält zehn Werte: fünf Werte für die Eigenschaft Marker
und fünf Werte für die Eigenschaft MarkerFaceColor
. Beachten Sie, dass prop_values
ein zweidimensionales Zellenarray ist. Die erste Dimension gibt an, auf welches Handle in h
sich die Werte beziehen, während die zweite Dimension angibt, welcher Eigenschaft der Wert zugewiesen ist:
prop_values(1,1) = {'s'}; prop_values(1,2) = {h(1).Color}; prop_values(2,1) = {'d'}; prop_values(2,2) = {h(2).Color}; prop_values(3,1) = {'o'}; prop_values(3,2) = {h(3).Color}; prop_values(4,1) = {'p'}; prop_values(4,2) = {h(4).Color}; prop_values(5,1) = {'h'}; prop_values(5,2) = {h(5).Color};
Die Flächenfarbe der Markierung (MarkerFaceColor
) wird stets dem Wert der Farbe der entsprechenden Linie zugewiesen (dieser kann über die Eigenschaft Color
der Linie abgerufen werden).
Rufen Sie nach der Definition der Zellenarrays set
auf, um die neuen Eigenschaftenwerte anzugeben:
set(h,prop_name,prop_values)
Funktionen für das Arbeiten mit Objekten
Die folgende Tabelle enthält Funktionen, die beim Arbeiten mit Objekten häufig verwendet werden.
Funktion | Zweck |
---|---|
Suchen aller untergeordneten Elemente des angegebenen Objekts. | |
Suchen des Vorgängers eines grafischen Objekts. | |
Kopieren eines grafischen Objekts. | |
Löschen eines Objekts. | |
Suchen aller grafischen Objekte (einschließlich ausgeblendeter Handles). | |
Suchen der Handles von Objekten, für die die Eigenschaftenwerte angegeben wurden. | |
Zurückgeben des Handles der aktuellen Achsen. | |
Zurückgeben des Handles der aktuellen Abbildung. | |
Zurückgeben des Handles des aktuellen Objekts. | |
Abfragen der Werte der Eigenschaften eines Objekts. | |
Wahr, wenn der Wert ein gültiges Object Handle ist. | |
Festlegen der Werte der Eigenschaften eines Objekts. |
Übergeben von Argumenten
Sie können spezialisierte Plotfunktionen definieren, um das Erstellen angepasster Diagramme zu vereinfachen. Durch die Definition einer Funktion können Sie Argumente wie zum Beispiel MATLAB Plotfunktionen übergeben.
Das folgende Beispiel veranschaulicht eine MATLAB Funktion, die einen mathematischen Ausdruck über den Bereich auswertet, der im Eingabeargument x
angegeben ist, und anschließend die Ergebnisse plottet. Durch einen zweiten Aufruf der Funktion plot
wird der Mittelwert der Ergebnisse (mean
) als rote Linie geplottet.
Die Funktion ändert die Teilstriche der Y-Achse abhängig von den berechneten Werten. Abschließend kann das Diagramm um Achsenbeschriftungen und einen Titel ergänzt werden.
function plotFunc(x) y = 1.5*cos(x) + 6*exp(-.1*x) + exp(.07*x).*sin(3*x); ym = mean(y); hfig = figure('Name','Function and Mean'); hax = axes('Parent',hfig); plot(hax,x,y) hold on plot(hax,[min(x) max(x)],[ym ym],'Color','red') hold off ylab = hax.YTick; new_ylab = sort([ylab, ym]); hax.YTick = new_ylab; title ('y = 1.5cos(x) + 6e^{-0.1x} + e^{0.07x}sin(3x)') xlabel('X Axis') ylabel('Y Axis') end
Definieren Sie einen Wert für das Eingabeargument und rufen Sie die Funktion auf.
x = -10:.005:40; plotFunc(x)
Suchen der Handles bestehender Objekte
Die Funktion findobj
ermöglicht Ihnen das Abrufen der Handles von grafischen Objekten, indem Sie nach Objekten mit bestimmten Eigenschaftenwerten suchen. Mit findobj
können Sie die Werte einer beliebigen Kombination von Eigenschaften angeben, wodurch es einfacher wird, ein Objekt unter vielen auszuwählen. findobj
erkennt auch reguläre Ausdrücke.
Suchen aller Objekte eines bestimmten Typs
Da alle Objekte die Eigenschaft Type
aufweisen, die den Typ des Objekts definiert, können Sie die Handles aller Vorkommen eines bestimmten Objekttyps suchen. Beispielsweise findet
h = findobj('Type','patch');
die Handles aller Patch Objects.
Suchen von Objekten mit einer bestimmten Eigenschaft
Sie können mehrere Eigenschaften angeben, um die Suche einzugrenzen. Beispielsweise findet
plot(rand(5),'r:') h = findobj('Type','line','Color','r','LineStyle',':');
die Handles aller rot gepunkteten Linien.
h = 5x1 Line array: Line Line Line Line Line
Eingrenzen des Suchbereichs
Sie können den Ausgangspunkt in der Objekthierarchie angeben, indem Sie das Handle der Ausgangsabbildung oder der Ausgangsachsen als erstes Argument angeben. Beispielsweise findet
h = findobj(gca,'Type','text','String','\pi/2');
π/2 nur innerhalb der aktuellen Achsen.