Hauptinhalt

surf

Oberflächendiagramm

  • Surface plot

Beschreibung

surf(X,Y,Z) erstellt ein dreidimensionales Oberflächendiagramm, d. h. eine dreidimensionale Oberfläche mit einfarbigen Kantenfarben und einfarbigen Flächenfarben. Die Funktion zeichnet die Werte der Matrix Z als Höhen über einem Raster in der x-y-Ebene ein, die durch X und Y definiert ist. Die Farbe der Oberfläche hängt von den durch Z angegebenen Höhen ab.

Beispiel

surf(X,Y,Z,C) gibt zusätzlich die Oberflächenfarbe an.

Beispiel

surf(Z) erstellt ein Oberflächendiagramm und verwendet die Spalten- und Zeilenindizes der Elemente von Z als x- und y-Koordinaten.

surf(Z,C) gibt zusätzlich die Oberflächenfarbe an.

surf(ax,___) plottet nicht in den aktuellen Achsenbereich, sondern in den durch ax angegebenen Achsenbereich. Geben Sie die Achsen als erstes Eingabeargument an.

surf(___,Name,Value) legt die Oberflächeneigenschaften mithilfe eines oder mehrerer Name-Wert-Paar-Argumente fest. Zum Beispiel erstellt 'FaceAlpha',0.5 eine halbtransparente Oberfläche.

Beispiel

s = surf(___) gibt das Oberflächendiagrammobjekt zurück. Verwenden Sie s, um die Oberfläche nach ihrer Erstellung zu modifizieren. Eine Liste mit Eigenschaften finden Sie unter Surface Properties.

Beispiel

Beispiele

alle reduzieren

Erstellen Sie drei gleich große Matrizen. Plotten Sie sie dann als Fläche. Im Oberflächendiagramm wird Z sowohl für die Höhe als auch für die Farbe verwendet.

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
surf(X,Y,Z)

Figure contains an axes object. The axes object contains an object of type surface.

Legen Sie anhand einer vierten Matrix-Eingabe, C, die Farben eines Oberflächendiagramms fest. Im Oberflächendiagramm wird Z für die Höhe und C für die Farbe verwendet. Legen Sie die Farben mithilfe einer Farbtabelle fest, in der einzelne Zahlen für Farben in einem Spektrum stehen. Wenn Sie eine Farbtabelle verwenden, weist C die gleiche Größe wie Z auf. Fügen Sie dem Diagramm einen Farbbalken hinzu, um zu zeigen, wie die Datenwerte von C den Farben in der Farbtabelle entsprechen.

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
C = X.*Y;
surf(X,Y,Z,C)
colorbar

Figure contains an axes object. The axes object contains an object of type surface.

Legen Sie anhand einer vierten Matrix-Eingabe, CO, die Farben eines Oberflächendiagramms fest. Im Oberflächendiagramm wird Z für die Höhe und CO für die Farbe verwendet. Legen Sie die Farben mithilfe von Truecolor fest, wobei alle möglichen Farben durch Zahlen-Tripel repräsentiert werden. Bei der Verwendung von Truecolor gilt: Wenn Z gleich mxn ist, dann ist CO gleich mxnx3. Die erste Seite des Arrays zeigt die rote Komponente jeder Farbe an, die zweite Seite zeigt die grüne Komponente an und die dritte Seite zeigt die blaue Komponente an.

[X,Y,Z] = peaks(25);
CO(:,:,1) = zeros(25); % red
CO(:,:,2) = ones(25).*linspace(0.5,0.6,25); % green
CO(:,:,3) = ones(25).*linspace(0,1,25); % blue
surf(X,Y,Z,CO)

Figure contains an axes object. The axes object contains an object of type surface.

Erstellen Sie eine halbtransparente Oberfläche, indem Sie das FaceAlpha-Name-Werte-Paar mit 0.5 als Wert angeben. Weisen Sie das Oberflächenobjekt der Variablen s zu, um weitere Änderungen zu ermöglichen.

[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s = surf(X,Y,Z,'FaceAlpha',0.5)

Figure contains an axes object. The axes object contains an object of type surface.

s = 
  Surface with properties:

       EdgeColor: [0.1294 0.1294 0.1294]
       LineStyle: '-'
       FaceColor: 'flat'
    FaceLighting: 'flat'
       FaceAlpha: 0.5000
           XData: [21×21 double]
           YData: [21×21 double]
           ZData: [21×21 double]
           CData: [21×21 double]

  Show all properties

Verwenden Sie s, um auf die Eigenschaften des Oberflächenobjekts zuzugreifen und diese zu ändern, nachdem es erstellt wurde. Blenden Sie zum Beispiel die Ränder aus, indem Sie die Eigenschaft EdgeColor einstellen.

s.EdgeColor = 'none';

Figure contains an axes object. The axes object contains an object of type surface.

Eingabeargumente

alle reduzieren

x-Koordinaten, die als Matrix mit derselben Größe wie Z oder als Vektor mit der Länge n angegeben werden, wobei gilt: [m,n] = size(Z). Wenn Sie keine Werte für X und Y angeben, verwendet surf die Vektoren (1:n) und (1:m).

Sie können die Funktion meshgrid verwenden, um X- und Y-Matrizen zu erstellen.

Die Eigenschaft XData des Surface-Objekts speichert die x-Koordinaten.

Beispiel: X = 1:10

Beispiel: X = [1 2 3; 1 2 3; 1 2 3]

Beispiel: [X,Y] = meshgrid(-5:0.5:5)

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

y-Koordinaten, die als Matrix mit derselben Größe wie Z oder als Vektor mit der Länge m angegeben werden, wobei gilt: [m,n] = size(Z). Wenn Sie keine Werte für X und Y angeben, verwendet surf die Vektoren (1:n) und (1:m).

Sie können die Funktion meshgrid verwenden, um die X- und Y-Matrizen zu erstellen.

Die Eigenschaft YData des Oberflächenobjekts speichert die y-Koordinaten.

Beispiel: Y = 1:10

Beispiel: Y = [1 1 1; 2 2 2; 3 3 3]

Beispiel: [X,Y] = meshgrid(-5:0.5:5)

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

z-Koordinaten, angegeben als Matrix. Z muss mindestens zwei Zeilen und zwei Spalten haben.

Z legt die Höhe des Oberflächendiagramms für jeden x-y-Punkt fest. Wenn Sie die Farben nicht festlegen, gibt Z auch die Oberflächenfarben an.

Die Eigenschaft ZData des Oberflächenobjekts speichert die z-Koordinaten.

Beispiel: Z = [1 2 3; 4 5 6]

Beispiel: Z = sin(x) + cos(y)

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

Farbarray, angegeben als eine mxn-Matrix aus Farbtabellenindizes oder als mxnx3-Array aus RGB-Tripeln, wobei gilt: Z ist mxn.

  • Um Farbtabellenfarben zu verwenden, geben Sie C als Matrix an. Für jeden Rasterpunkt auf der Oberfläche gibt C eine Farbe in der Farbtabelle an. Die Eigenschaft CDataMapping des Oberflächenobjekts steuert, wie die Werte in C den Farben in der Farbtabelle entsprechen.

  • Geben Sie C als ein Array aus RGB-Tripeln an, um Truecolor-Farben zu verwenden.

Weitere Informationen finden Sie unter Differences Between Colormaps and Truecolor.

Die Eigenschaft CData des Oberflächenobjekts speichert das Farbarray. Verwenden Sie zur zusätzlichen Steuerung der Oberflächenfärbung die Eigenschaften FaceColor und EdgeColor.

Achsen, in die geplottet werden soll, angegeben als Axes- oder PolarAxes-Objekt. Wenn Sie die Achsen nicht angeben, plottet surf in den aktuellen Achsenbereich oder erstellt ein Axes-Objekt (kartesische Achsen).

Name-Wert-Argumente

alle reduzieren

Geben Sie optionale Argumentpaare als Name1=Value1,...,NameN=ValueN an, wobei Name der Name des Arguments und Value der entsprechende Wert ist. Name-Wert-Argumente müssen nach anderen Argumenten angezeigt werden. Die Reihenfolge der Paare spielt jedoch keine Rolle.

In Releases vor R2021a verwenden Sie Kommas, um die einzelnen Namen und Werte zu trennen, und schließen Sie Name in Anführungszeichen ein.

Beispiel: surf(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none') erstellt eine halbtransparente Oberfläche ohne gezeichnete Kanten.

Hinweis

Die hier aufgeführten Eigenschaften sind lediglich eine Teilmenge. Eine vollständige Liste finden Sie unter Surface Properties.

Farbe der Kantenlinie, angegeben als einer der in dieser Tabelle aufgeführten Werte.

WertBeschreibung
"none"Zeichnen Sie die Kanten nicht ein.
"flat"

Verwenden Sie für jede Kante eine andere Farbe, basierend auf den Werten der Eigenschaft CData. Zunächst müssen Sie die Eigenschaft CData als eine Matrix mit derselben Größe wie ZData festlegen. Der Farbwert am ersten Eckpunkt jeder Fläche (in der positiven x- und y-Richtung) bestimmt die Farbe für die angrenzenden Kanten. Sie können diesen Wert nicht verwenden, wenn die Eigenschaft EdgeAlpha auf "interp" eingestellt ist.

Sample of a surface with each edge a different color based on sample values in the CData property

"interp"

Verwenden Sie für jede Kante eine interpolierte Färbung, basierend auf den Werten der Eigenschaft CData. Zunächst müssen Sie die Eigenschaft CData als eine Matrix mit derselben Größe wie ZData festlegen. Die Farbe variiert über jede Kante durch lineare Interpolation der Farbwerte an den Eckpunkten. Sie können diesen Wert nicht verwenden, wenn die Eigenschaft EdgeAlpha auf "flat" eingestellt ist.

Sample of a surface with each edge showing different interpolated coloring based on sample values in the CData property

RGB-Tripel, hexadezimaler Farbcode oder Farbname

Verwenden Sie die angegebene Farbe für alle Kanten. Diese Option verwendet nicht die Farbwerte der Eigenschaft CData.

Sample of a surface with all edges shown in red

RGB-Tripel und hexadezimale Farbcodes sind nützlich, um benutzerdefinierte Farben festzulegen.

  • Ein RGB-Tripel ist ein aus drei Elementen bestehender Zeilenvektor, dessen Elemente die Intensitäten der Rot-, Grün- und Blaukomponenten der Farbe angeben. Die Intensitäten müssen im Bereich [0,1] liegen, z. B. [0.4 0.6 0.7].

  • Ein hexadezimaler Farbcode ist ein Zeichenvektor oder ein Zeichenfolgenskalar, der mit einem Rautezeichen beginnt (#), auf das drei oder sechs hexadezimale Ziffern folgen, die von 0 bis F reichen können. Bei den Werten wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Daher sind die Farbcodes "#FF8800", "#ff8800", "#F80" und "#f80" äquivalent.

Alternativ können Sie einige gängige Farben einfach mit ihrem Namen angeben. In dieser Tabelle sind die Namen der Farboptionen, die äquivalenten RGB-Tripel und die hexadezimalen Farbcodes angegeben.

Name der FarbeKurznameRGB-TripelHexadezimaler FarbcodeDarstellung
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

In dieser Tabelle finden Sie die Standardfarbpaletten für Diagramme im hellen und dunklen Design.

PalettePalettenfarben

"gem" – Standardmäßig helles Design

Vor R2025a: Die meisten Diagramme verwenden standardmäßig diese Farben.

Sample of the "gem" color palette

"glow" – Standardmäßig dunkles Design

Sample of the "glow" color palette

Die RGB-Tripel und hexadezimalen Farbcodes für diese Paletten erhalten Sie mit den Funktionen orderedcolors und rgb2hex. Besorgen Sie sich zum Beispiel die RGB-Tripel für die "gem"-Palette und wandeln Sie sie in hexadezimale Farbcodes um.

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

Vor R2023b: Besorgen Sie sich die RGB-Tripel mit RGB = get(groot,"FactoryAxesColorOrder").

Vor R2024a: Besorgen Sie sich die hexadezimalen Farbcodes mit H = compose("#%02X%02X%02X",round(RGB*255)).

Linienstil, angegeben als eine der in dieser Tabelle aufgeführten Optionen.

LinienstilBeschreibungResultierende Linie
"-"Durchgezogene Linie

Sample of solid line

"--"Gestrichelte Linie

Sample of dashed line

":"Gepunktete Linie

Sample of dotted line

"-."Strich-Punkt-Linie

Sample of dash-dotted line, with alternating dashes and dots

"none"Keine LinieKeine Linie

Flächenfarbe, angegeben als einer der Werte in dieser Tabelle.

WertBeschreibung
'flat'

Verwenden Sie für jede Fläche eine andere Farbe, basierend auf den Werten der Eigenschaft CData. Zunächst müssen Sie die Eigenschaft CData als eine Matrix mit derselben Größe wie ZData festlegen. Der Farbwert am ersten Eckpunkt jeder Fläche (in der positiven x- und y-Richtung) bestimmt die Farbe für die gesamte Fläche. Sie können diesen Wert nicht verwenden, wenn die Eigenschaft FaceAlpha auf 'interp' eingestellt ist.

Sample of a surface with each face a different color based on sample values in the CData property

'interp'

Verwenden Sie für jede Fläche eine interpolierte Färbung, basierend auf den Werten der Eigenschaft CData. Zunächst müssen Sie die Eigenschaft CData als eine Matrix mit derselben Größe wie ZData festlegen. Die Farbe variiert über jede Fläche durch Interpolation der Farbwerte an den Eckpunkten. Sie können diesen Wert nicht verwenden, wenn die Eigenschaft FaceAlpha auf 'flat' eingestellt ist.

Sample of a surface with each face showing different interpolated coloring based on sample values in the CData property

RGB-Tripel, hexadezimaler Farbcode oder Farbname

Verwenden Sie die angegebene Farbe für alle Flächen. Diese Option verwendet nicht die Farbwerte der Eigenschaft CData.

Sample of a surface with all faces shown in red

'texturemap'Transformieren Sie die Farbdaten in CData so, dass sie mit der Oberfläche übereinstimmen.
'none'Zeichnen Sie die Flächen nicht ein.

RGB-Tripel und hexadezimale Farbcodes sind nützlich, um benutzerdefinierte Farben festzulegen.

  • Ein RGB-Tripel ist ein aus drei Elementen bestehender Zeilenvektor, dessen Elemente die Intensitäten der Rot-, Grün- und Blaukomponenten der Farbe angeben. Die Intensitäten müssen im Bereich [0,1] liegen, z. B. [0.4 0.6 0.7].

  • Ein hexadezimaler Farbcode ist ein Zeichenvektor oder ein Zeichenfolgenskalar, der mit einem Rautezeichen beginnt (#), auf das drei oder sechs hexadezimale Ziffern folgen, die von 0 bis F reichen können. Bei den Werten wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Daher sind die Farbcodes "#FF8800", "#ff8800", "#F80" und "#f80" äquivalent.

Alternativ können Sie einige gängige Farben einfach mit ihrem Namen angeben. In dieser Tabelle sind die Namen der Farboptionen, die äquivalenten RGB-Tripel und die hexadezimalen Farbcodes angegeben.

Name der FarbeKurznameRGB-TripelHexadezimaler FarbcodeDarstellung
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

In dieser Tabelle finden Sie die Standardfarbpaletten für Diagramme im hellen und dunklen Design.

PalettePalettenfarben

"gem" – Standardmäßig helles Design

Vor R2025a: Die meisten Diagramme verwenden standardmäßig diese Farben.

Sample of the "gem" color palette

"glow" – Standardmäßig dunkles Design

Sample of the "glow" color palette

Die RGB-Tripel und hexadezimalen Farbcodes für diese Paletten erhalten Sie mit den Funktionen orderedcolors und rgb2hex. Besorgen Sie sich zum Beispiel die RGB-Tripel für die "gem"-Palette und wandeln Sie sie in hexadezimale Farbcodes um.

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

Vor R2023b: Besorgen Sie sich die RGB-Tripel mit RGB = get(groot,"FactoryAxesColorOrder").

Vor R2024a: Besorgen Sie sich die hexadezimalen Farbcodes mit H = compose("#%02X%02X%02X",round(RGB*255)).

Transparenz der Fläche, angegeben als einer dieser Werte:

  • Skalar im Bereich [0,1] — Verwenden Sie eine einheitliche Transparenz für alle Flächen. Ein Wert von 1 ist vollständig undurchsichtig und 0 ist vollständig transparent. Werte zwischen 0 und 1 sind halbtransparent. Diese Option verwendet nicht die Transparenzwerte der Eigenschaft AlphaData.

  • 'flat' — Verwenden Sie für jede Fläche eine andere Transparenz, basierend auf den Werten der Eigenschaft AlphaData. Der Transparenzwert am ersten Eckpunkt bestimmt die Transparenz für die gesamte Fläche. Zunächst müssen Sie die Eigenschaft AlphaData als eine Matrix mit derselben Größe wie die Eigenschaft ZData festlegen. Die Eigenschaft FaceColor muss ebenfalls auf 'flat' eingestellt sein.

  • 'interp' — Verwenden Sie für jede Fläche eine interpolierte Transparenz, basierend auf den Werten der Eigenschaft AlphaData. Die Transparenz variiert über jede Fläche durch Interpolation der Werte an den Eckpunkten. Zunächst müssen Sie die Eigenschaft AlphaData als eine Matrix mit derselben Größe wie die Eigenschaft ZData festlegen. Die Eigenschaft FaceColor muss ebenfalls auf 'interp' eingestellt sein.

  • 'texturemap' — Transformieren Sie die Daten in AlphaData so, dass sie mit der Oberfläche übereinstimmen.

Wirkung von Lichtobjekten auf Flächen, angegeben als einer dieser Werte:

  • 'flat' — Beleuchten Sie jede Fläche gleichmäßig. Verwenden Sie diesen Wert, um facettierte Objekte anzuzeigen.

  • 'gouraud' — Variieren Sie die Beleuchtung der Flächen. Berechnen Sie das Licht an den Eckpunkten und interpolieren Sie dann das Licht linear über die Flächen. Verwenden Sie diesen Wert, um gekrümmte Oberflächen anzuzeigen.

  • 'none' — Lassen Sie kein Licht von Lichtobjekten auf die Flächen fallen.

Verwenden Sie die Funktion light, um ein Lichtobjekt zu den Achsen hinzuzufügen.

Hinweis

Der 'phong'-Wert wurde entfernt. Verwenden Sie stattdessen 'gouraud'.

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt vor R2006a

alle erweitern