Contenuto principale

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

surf

Grafico di superficie

  • Surface plot

Descrizione

surf(X,Y,Z) crea un grafico di superficie tridimensionale, che è una superficie tridimensionale con colori a tinta unita per i bordi e per le facce. La funzione traccia i valori della matrice Z come altezze sopra una griglia nel piano x-y definito da X e Y. Il colore della superficie varia in base alle altezze specificate da Z.

esempio

surf(X,Y,Z,C) specifica inoltre il colore della superficie.

esempio

surf(Z) crea un grafico di superficie e utilizza gli indici di colonna e di riga degli elementi di Z come coordinate x e y.

surf(Z,C) specifica inoltre il colore della superficie.

surf(ax,___) traccia sugli assi specificati da ax anziché su quelli correnti. Specificare gli assi come primo argomento di input.

surf(___,Name,Value) specifica le proprietà della superficie utilizzando uno o più argomenti della coppia nome-valore. Ad esempio, 'FaceAlpha',0.5 crea una superficie semitrasparente.

esempio

s = surf(___) restituisce l'oggetto superficie del grafico. Utilizzare s per modificare la superficie dopo che è stata creata. Per un elenco delle proprietà, vedere Surface Properties.

esempio

Esempi

comprimi tutto

Creare tre matrici della stessa grandezza. Quindi tracciarle come superficie. Il grafico di superficie utilizza Z per l'altezza e il colore.

[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.

Specificare i colori per un grafico di superficie includendo una quarta matrice di input C. Il grafico di superficie utilizza Z per l'altezza e C per il colore. Specificare i colori utilizzando una mappa dei colori che utilizza numeri singoli per indicare i colori di uno spettro. Quando si utilizza una mappa dei colori, C ha la stessa grandezza di Z. Aggiungere una barra dei colori al grafico per mostrare come i valori dei dati in C corrispondono ai colori della mappa dei colori.

[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.

Specificare i colori per un grafico di superficie includendo una quarta matrice di input CO. Il grafico di superficie utilizza Z per l'altezza e CO per il colore. Specificare i colori utilizzando truecolor che utilizza triplette di numeri per indicare tutti i colori possibili. Quando si utilizza truecolor, se Z è m x n, CO è m x n x 3. La prima pagina dell'array indica il componente rosso di ciascun colore, la seconda pagina indica il componente verde e la terza pagina indica il componente blu.

[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.

Creare una superficie semitrasparente specificando la coppia nome-valore FaceAlpha con 0.5 come valore. Per consentire ulteriori modifiche, assegnare l'oggetto superficie alla variabile s.

[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 0 0]
       LineStyle: '-'
       FaceColor: 'flat'
    FaceLighting: 'flat'
       FaceAlpha: 0.5000
           XData: [21x21 double]
           YData: [21x21 double]
           ZData: [21x21 double]
           CData: [21x21 double]

  Use GET to show all properties

Utilizzare s per accedere e modificare le proprietà dell'oggetto superficie dopo che è stato creato. Ad esempio, nascondere i bordi impostando la proprietà EdgeColor.

s.EdgeColor = 'none';

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

Argomenti di input

comprimi tutto

Coordinate x, specificate come matrice della stessa grandezza di Z o come vettore di lunghezza n, dove [m,n] = size(Z). Se non si specificano valori per X e Y, surf utilizza i vettori (1:n) e (1:m).

È possibile utilizzare la funzione meshgrid per creare matrici X e Y.

La proprietà XData dell'oggetto Surface memorizza le coordinate x.

Esempio X = 1:10

Esempio X = [1 2 3; 1 2 3; 1 2 3]

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

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

Coordinate y, specificate come matrice della stessa grandezza di Z o come vettore di lunghezza m, dove [m,n] = size(Z). Se non si specificano valori per X e Y, surf utilizza i vettori (1:n) e (1:m).

È possibile utilizzare la funzione meshgrid per creare le matrici X e Y.

La proprietà YData dell'oggetto superficie memorizza le coordinate y.

Esempio Y = 1:10

Esempio Y = [1 1 1; 2 2 2; 3 3 3]

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

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

Coordinate z, specificate come matrice. Z deve avere almeno due righe e due colonne.

Z specifica l'altezza del grafico di superficie per ogni coordinata x-y. Se non si specificano i colori, Z specifica anche i colori della superficie.

La proprietà ZData dell'oggetto superficie memorizza le coordinate z.

Esempio Z = [1 2 3; 4 5 6]

Esempio Z = sin(x) + cos(y)

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

Array di colori, specificato come matrice m x n degli indici della mappa dei colori o come array m x n x 3 di triplette RGB, dove Z è m x n.

  • Per utilizzare i colori della mappa dei colori, specificare C come una matrice. Per ciascun punto della griglia sulla superficie, C indica un colore della mappa dei colori. La proprietà CDataMapping dell'oggetto superficie controlla il modo in cui i valori in C corrispondono ai colori della mappa dei colori.

  • Per utilizzare i colori truecolor, specificare C come array di triplette RGB.

Per maggiori informazioni, vedere Differences Between Colormaps and Truecolor.

La proprietà CData dell'oggetto superficie memorizza l'array di colori. Per un ulteriore controllo sulla colorazione della superficie, utilizzare le proprietà FaceColor e EdgeColor.

Assi da tracciare in, specificati come oggetto axes. Se non si specificano gli assi, surf traccia gli assi correnti.

Argomenti nome-valore

comprimi tutto

Specificare coppie opzionali di argomenti come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell’argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono comparire dopo gli altri argomenti, mentre l'ordine delle coppie non è rilevante.

Per le release antecedenti alla R2021a, utilizzare le virgole per separare ciascun nome e valore e includere Name tra virgolette.

Esempio surf(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none') crea una superficie semitrasparente senza bordi disegnati.

Nota

Le proprietà qui elencate sono solo un sottoinsieme. Per un elenco completo, vedere Surface Properties.

Colore della linea del bordo, specificato come uno dei valori qui elencati. Il colore predefinito di [0 0 0] corrisponde a bordi neri.

ValoreDescrizione
'none'Non disegna i bordi.
'flat'

Utilizza un colore diverso per ciascun bordo in base ai valori della proprietà CData. Per prima cosa è necessario specificare la proprietà CData come matrice della stessa grandezza di ZData. Il valore del colore al primo vertice di ciascuna faccia (nelle direzioni positive di x e y) determina il colore per i bordi adiacenti. Non è possibile utilizzare questo valore quando la proprietà EdgeAlpha è impostata su 'interp'.

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

'interp'

Utilizza una colorazione interpolata per ciascun bordo in base ai valori della proprietà CData. Per prima cosa è necessario specificare la proprietà CData come matrice della stessa grandezza di ZData. Il colore varia su ciascun bordo interpolando linearmente i valori del colore ai vertici. Non è possibile utilizzare questo valore quando la proprietà EdgeAlpha è impostata su 'flat'.

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

Tripletta RGB, codice di colore esadecimale o nome del colore

Utilizza il colore specificato per tutti i bordi. Questa opzione non utilizza i valori di colore della proprietà CData.

Sample of a surface with all edges shown in red

Le triplette RGB e i codici di colore esadecimali sono utili per specificare i colori personalizzati.

  • Una tripletta RGB è un vettore riga a tre elementi i cui elementi specificano le intensità dei componenti rosso, verde e blu del colore. Le intensità devono essere comprese nell'intervallo [0,1]; ad esempio, [0.4 0.6 0.7].

  • Un codice di colore esadecimale è un vettore di caratteri o uno scalare di stringa che inizia con un simbolo cancelletto (#) seguito da tre o sei cifre esadecimali che possono andare da 0 a F. I valori non differenziano tra maiuscole e minuscole. Quindi, i codici di colore "#FF8800", "#ff8800", "#F80" e "#f80" sono equivalenti.

In alternativa, è possibile specificare alcuni colori comuni per nome. Questa tabella elenca le opzioni di colore denominate, le terzine RGB equivalenti e i codici colore esadecimali.

Nome del coloreNome abbreviatoTripletta RGBCodice di colore esadecimaleAspetto
"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

Si riportano di seguito le triplette RGB e i codici di colore esadecimale per i colori predefiniti che MATLAB® utilizza in molti tipi di grafici.

Tripletta RGBCodice di colore esadecimaleAspetto
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Stile delle linee, specificato come una delle opzioni elencate in questa tabella.

Stile delle lineeDescrizioneLinea risultante
"-"Linea continua

Sample of solid line

"--"Linea tratteggiata

Sample of dashed line

":"Linea punteggiata

Sample of dotted line

"-."Linea a tratti e punti

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

"none"Nessuna lineaNessuna linea

Colore della faccia, specificato come uno dei valori nella tabella sottostante.

ValoreDescrizione
'flat'

Utilizza un colore diverso per ciascuna faccia in base ai valori della proprietà CData. Per prima cosa è necessario specificare la proprietà CData come matrice della stessa grandezza di ZData. Il valore del colore al primo vertice di ciascuna faccia (nelle direzioni positive di x e y) determina il colore per l'intera faccia. Non è possibile utilizzare questo valore quando la proprietà FaceAlpha è impostata su 'interp'.

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

'interp'

Utilizza una colorazione interpolata per ciascuna faccia in base ai valori della proprietà CData. Per prima cosa è necessario specificare la proprietà CData come matrice della stessa grandezza di ZData. Il colore varia su ciascuna faccia interpolando i valori del colore ai vertici. Non è possibile utilizzare questo valore quando la proprietà FaceAlpha è impostata su 'flat'.

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

Tripletta RGB, codice di colore esadecimale o nome del colore

Utilizza il colore specificato per tutte le facce. Questa opzione non utilizza i valori di colore della proprietà CData.

Sample of a surface with all faces shown in red

'texturemap'Trasforma i dati del colore in CData in modo che siano conformi alla superficie.
'none'Non disegna le facce.

Le triplette RGB e i codici di colore esadecimali sono utili per specificare i colori personalizzati.

  • Una tripletta RGB è un vettore riga a tre elementi i cui elementi specificano le intensità dei componenti rosso, verde e blu del colore. Le intensità devono essere comprese nell'intervallo [0,1]; ad esempio, [0.4 0.6 0.7].

  • Un codice di colore esadecimale è un vettore di caratteri o uno scalare di stringa che inizia con un simbolo cancelletto (#) seguito da tre o sei cifre esadecimali che possono andare da 0 a F. I valori non differenziano tra maiuscole e minuscole. Quindi, i codici di colore "#FF8800", "#ff8800", "#F80" e "#f80" sono equivalenti.

In alternativa, è possibile specificare alcuni colori comuni per nome. Questa tabella elenca le opzioni di colore denominate, le terzine RGB equivalenti e i codici colore esadecimali.

Nome del coloreNome abbreviatoTripletta RGBCodice di colore esadecimaleAspetto
"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

Si riportano di seguito le triplette RGB e i codici di colore esadecimale per i colori predefiniti che MATLAB utilizza in molti tipi di grafici.

Tripletta RGBCodice di colore esadecimaleAspetto
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Trasparenza della faccia, specificata come uno dei seguenti valori:

  • Scalare nell'intervallo [0,1]: utilizza una trasparenza uniforme su tutte le facce. Un valore di 1 è completamente opaco, mentre 0 è completamente trasparente. I valori compresi tra 0 e 1 sono semitrasparenti. Questa opzione non utilizza i valori di trasparenza della proprietà AlphaData.

  • 'flat': utilizza una trasparenza diversa per ciascuna faccia in base ai valori della proprietà AlphaData. Il valore della trasparenza del primo vertice determina la trasparenza dell'intera faccia. Per prima cosa è necessario specificare la proprietà AlphaData come matrice della stessa grandezza della proprietà ZData. Anche la proprietà FaceColor deve essere impostata su 'flat'.

  • 'interp': utilizza la trasparenza interpolata per ciascuna faccia in base ai valori della proprietà AlphaData. La trasparenza varia su ciascuna faccia interpolando i valori ai vertici. Per prima cosa è necessario specificare la proprietà AlphaData come matrice della stessa grandezza della proprietà ZData. Anche la proprietà FaceColor deve essere impostata su 'interp'.

  • 'texturemap': trasforma i dati in AlphaData in modo che siano conformi alla superficie.

Effetto degli oggetti luce sulle facce, specificato come uno di questi valori:

  • 'flat': applica la luce in modo uniforme su tutta la faccia. Utilizzare questo valore per visualizzare gli oggetti sfaccettati.

  • 'gouraud': varia la luce sulle facce. Calcola la luce sui vertici e poi la interpola linearmente sulle facce. Utilizzare questo valore per visualizzare le superfici curve.

  • 'none': non applica la luce degli oggetti luce sulle facce.

Per aggiungere un oggetto luce agli assi, utilizzare la funzione light.

Nota

Il valore 'phong' è stato rimosso. Utilizzare invece 'gouraud'.

Funzionalità estese

espandi tutto

Cronologia versioni

Introduzione prima di R2006a