surf
Oberflächendiagramm

Beschreibung
surf( 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 X,Y,Z)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.
surf( erstellt ein Oberflächendiagramm und verwendet die Spalten- und Zeilenindizes der Elemente von Z)Z als x- und y-Koordinaten.
surf( plottet nicht in den aktuellen Achsenbereich, sondern in den durch ax,___)ax angegebenen Achsenbereich. Geben Sie die Achsen als erstes Eingabeargument an.
surf(___, legt die Oberflächeneigenschaften mithilfe eines oder mehrerer Name-Wert-Paar-Argumente fest. Zum Beispiel erstellt Name,Value)'FaceAlpha',0.5 eine halbtransparente Oberfläche.
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.
Beispiele
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)

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

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)

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)
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';
Eingabeargumente
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
Cals Matrix an. Für jeden Rasterpunkt auf der Oberfläche gibtCeine Farbe in der Farbtabelle an. Die EigenschaftCDataMappingdes Oberflächenobjekts steuert, wie die Werte inCden Farben in der Farbtabelle entsprechen.Geben Sie
Cals 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
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.
| Wert | Beschreibung |
|---|---|
"none" | Zeichnen Sie die Kanten nicht ein. |
"flat" | Verwenden Sie für jede Kante eine andere Farbe, basierend auf den Werten der Eigenschaft
|
"interp" | Verwenden Sie für jede Kante eine interpolierte Färbung, basierend auf den Werten der Eigenschaft
|
| RGB-Tripel, hexadezimaler Farbcode oder Farbname | Verwenden Sie die angegebene Farbe für alle Kanten. Diese Option verwendet nicht die Farbwerte der Eigenschaft
|
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 von0bisFreichen 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 Farbe | Kurzname | RGB-Tripel | Hexadezimaler Farbcode | Darstellung |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
In dieser Tabelle finden Sie die Standardfarbpaletten für Diagramme im hellen und dunklen Design.
| Palette | Palettenfarben |
|---|---|
Vor R2025a: Die meisten Diagramme verwenden standardmäßig diese Farben. |
|
|
|
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.
| Linienstil | Beschreibung | Resultierende Linie |
|---|---|---|
"-" | Durchgezogene Linie |
|
"--" | Gestrichelte Linie |
|
":" | Gepunktete Linie |
|
"-." | Strich-Punkt-Linie |
|
"none" | Keine Linie | Keine Linie |
Flächenfarbe, angegeben als einer der Werte in dieser Tabelle.
| Wert | Beschreibung |
|---|---|
'flat' | Verwenden Sie für jede Fläche eine andere Farbe, basierend auf den Werten der Eigenschaft
|
'interp' | Verwenden Sie für jede Fläche eine interpolierte Färbung, basierend auf den Werten der Eigenschaft
|
| RGB-Tripel, hexadezimaler Farbcode oder Farbname | Verwenden Sie die angegebene Farbe für alle Flächen. Diese Option verwendet nicht die Farbwerte der Eigenschaft
|
'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 von0bisFreichen 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 Farbe | Kurzname | RGB-Tripel | Hexadezimaler Farbcode | Darstellung |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
In dieser Tabelle finden Sie die Standardfarbpaletten für Diagramme im hellen und dunklen Design.
| Palette | Palettenfarben |
|---|---|
Vor R2025a: Die meisten Diagramme verwenden standardmäßig diese Farben. |
|
|
|
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 von1ist vollständig undurchsichtig und0ist vollständig transparent. Werte zwischen0und1sind halbtransparent. Diese Option verwendet nicht die Transparenzwerte der EigenschaftAlphaData.'flat'— Verwenden Sie für jede Fläche eine andere Transparenz, basierend auf den Werten der EigenschaftAlphaData. Der Transparenzwert am ersten Eckpunkt bestimmt die Transparenz für die gesamte Fläche. Zunächst müssen Sie die EigenschaftAlphaDataals eine Matrix mit derselben Größe wie die EigenschaftZDatafestlegen. Die EigenschaftFaceColormuss ebenfalls auf'flat'eingestellt sein.'interp'— Verwenden Sie für jede Fläche eine interpolierte Transparenz, basierend auf den Werten der EigenschaftAlphaData. Die Transparenz variiert über jede Fläche durch Interpolation der Werte an den Eckpunkten. Zunächst müssen Sie die EigenschaftAlphaDataals eine Matrix mit derselben Größe wie die EigenschaftZDatafestlegen. Die EigenschaftFaceColormuss ebenfalls auf'interp'eingestellt sein.'texturemap'— Transformieren Sie die Daten inAlphaDataso, 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
Die Funktion surf unterstützt GPU-Array-Eingaben mit folgenden Verwendungshinweisen und Einschränkungen:
Diese Funktion akzeptiert Grafikkarten-Arrays, wird jedoch nicht auf einer Grafikkarte ausgeführt.
Weitere Informationen finden Sie unter Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Die Funktion surf unterstützt verteilte Arrays mit folgenden Verwendungshinweisen und Einschränkungen:
Diese Funktion kann auf verteilte Arrays angewandt werden, wird jedoch im MATLAB®-Client ausgeführt.
Weitere Informationen finden Sie unter Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Versionsverlauf
Eingeführt vor R2006aErstellen Sie Oberflächendiagramme in Polarkoordinaten, indem Sie ein PolarAxes-Objekt als erstes Argument angeben.
Siehe auch
Funktionen
Eigenschaften
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)



















