Main Content

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

allchild

Suchen aller untergeordneten Elemente des angegebenen Objekts.

ancestor

Suchen des Vorgängers eines grafischen Objekts.

copyobj

Kopieren eines grafischen Objekts.

delete

Löschen eines Objekts.

findall

Suchen aller grafischen Objekte (einschließlich ausgeblendeter Handles).

findobj

Suchen der Handles von Objekten, für die die Eigenschaftenwerte angegeben wurden.

gca

Zurückgeben des Handles der aktuellen Achsen.

gcf

Zurückgeben des Handles der aktuellen Abbildung.

gco

Zurückgeben des Handles des aktuellen Objekts.

get

Abfragen der Werte der Eigenschaften eines Objekts.

ishandle

Wahr, wenn der Wert ein gültiges Object Handle ist.

set

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.