Nuage de points dans MATLAB

Ammar Ali 20 janvier 2022
Nuage de points dans MATLAB

Ce tutoriel abordera la création d’un nuage de points à l’aide de la fonction scatter() dans MATLAB.

Créer un nuage de points à l’aide de la fonction scatter() dans MATLAB

La fonction scatter(x,y) crée un nuage de points sur l’emplacement spécifié par les vecteurs d’entrée x et y. Par défaut, la fonction scatter() utilise des marqueurs circulaires pour tracer les données fournies. Par exemple, utilisons la fonction scatter() pour créer un nuage de points de données données. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y)

Production :

Nuage de points

Les données stockées dans les variables x et y sont utilisées pour créer un nuage de points dans la sortie. Assurez-vous que la longueur des variables x et y doit être la même. Sinon, MATLAB affichera une erreur. Par défaut, la fonction scatter() utilise la valeur par défaut pour la taille et la couleur des cercles, mais nous pouvons modifier les propriétés par défaut de la fonction. Par exemple, pour changer la taille des cercles, nous devons définir la taille des cercles comme troisième argument à l’intérieur de la fonction scatter(). Par exemple, modifions la taille des cercles dans le tracé ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y,10)

Production :

Modification de la taille des cercles dans le nuage de points

La taille des cercles dans la sortie ci-dessus est différente par rapport à la taille des cercles dans le nuage de points précédent. La taille doit être une valeur numérique positive ou un vecteur de la même taille que les vecteurs d’entrée x et y. Si la taille est une seule valeur numérique positive, comme dans le code ci-dessus, elle s’appliquera à tous les cercles présents dans le nuage de points. Nous pouvons également donner à chaque cercle une valeur de taille différente en utilisant un vecteur de la même longueur que les vecteurs d’entrée x et y. Par exemple, modifions la taille de chaque cercle dans le nuage de points ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize)

Production :

nuage de points avec différentes tailles de cercle

Dans la sortie ci-dessus, chaque cercle a une taille différente. On peut aussi modifier la couleur des cercles du nuage de points en le passant comme quatrième argument dans la fonction scatter(). Par exemple, changeons la couleur des cercles dans le nuage de points ci-dessus en noir. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,[0 0 0])

Production :

Modification de la couleur des cercles dans le nuage de points

Dans le nuage de points ci-dessus, la couleur des cercles est noire, mais nous pouvons lui donner n’importe quelle couleur en entrant la valeur RVB de cette couleur comme quatrième argument dans la fonction scatter(). On peut aussi changer la couleur en passant le nom de la couleur sous forme de chaîne dans la fonction scatter(). Si nous définissons une seule valeur de couleur, elle sera appliquée à tous les cercles présents dans le nuage de points. Nous pouvons également donner à chaque cercle une couleur différente en utilisant une matrice de la même taille que les vecteurs d’entrée x et y. La matrice peut contenir des valeurs numériques positives ou des triplets de couleurs RVB. Par exemple, changeons la couleur de chaque cercle dans le nuage de points ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor)
colorbar

Production :

nuage de points avec différentes couleurs de cercle

La commande colorbar est utilisée dans le code ci-dessus pour tracer une barre de couleur dans le nuage de points. Nous pouvons voir à partir de la barre de couleur que les valeurs basses appartiennent à la couleur la plus froide et les valeurs élevées appartiennent à la couleur la plus chaude. Nous avons utilisé un vecteur avec des valeurs numériques positives dans cet exemple, mais nous pouvons également utiliser une matrice avec des valeurs de triplet RVB. Les cercles sont creux dans les nuages ​​de points ci-dessus, mais nous pouvons également les remplir en utilisant la propriété filled à l’intérieur de la fonction scatter(). Par exemple, remplissons les cercles présents dans le nuage de points ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled')
colorbar

Production :

Remplir les cercles dans le nuage de points

Dans la sortie, chaque couleur est remplie. Nous pouvons également modifier le symbole du marqueur dans le nuage de points. Par défaut, la fonction scatter() utilise le cercle comme marqueur, mais on peut le changer en passant une chaîne contenant le symbole du marqueur comme d pour le losange, p pour le pentagramme, h pour l’hexagramme , etc. Par exemple, changeons le symbole du marqueur de cercle en pentagramme dans le nuage de points ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'p')

Production :

Modification du symbole du marqueur dans le nuage de points

Dans la sortie, le symbole du marqueur est remplacé par un pentagramme. Nous pouvons également modifier la transparence du marqueur en utilisant la propriété MarkerFaceAlpha dans la fonction scatter(). Nous pouvons modifier la valeur de transparence de 0 à 1. Par exemple, modifions la transparence du nuage de points ci-dessus à 0,5. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled','MarkerFaceAlpha',0.5)

Production :

Modification de la transparence des marqueurs dans le nuage de points

Dans la sortie, le marqueur a la même couleur de bord et de face, mais nous pouvons donner au marqueur une couleur de bord et de face différente. Pour modifier la couleur des bords du marqueur, nous pouvons utiliser la propriété MarkerEdgeColor à l’intérieur du tracé scatter(). Pour modifier la couleur de la face du marqueur, nous pouvons utiliser la propriété MarkerFaceColor. La valeur de couleur peut être n’importe quel triplet RVB ou une chaîne contenant le nom de la couleur. Nous pouvons également modifier la largeur de ligne du bord du marqueur en utilisant la propriété LineWidth. Par exemple, modifions la couleur des bords, la couleur de la face et la largeur de ligne du marqueur dans le nuage de points ci-dessus. Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,'MarkerFaceColor','yellow','MarkerEdgeColor','black','LineWidth',1.5)

Production :

Modification de la couleur de la face et du bord du marqueur dans le nuage de points

Dans la sortie, la couleur de la face du marqueur est jaune et la couleur des bords est noire. Si nous voulons créer un nuage de points en 3D, nous pouvons utiliser la fonction scatter3(). Cette fonction est la même que la fonction scatter(), sauf qu’elle trace les données données dans un plan 3D. On peut donner deux ou trois vecteurs d’entrée à la fonction scatter3(). Dans le cas de trois entrées, le premier vecteur contient les coordonnées x, le deuxième contient les coordonnées y et le troisième contient les coordonnées z. Dans le cas de deux vecteurs d’entrée, la troisième coordonnée z sera extraite des indices des deux premières coordonnées. Par exemple, traçons le nuage de points ci-dessus en 3D à l’aide de la fonction scatter3(). Voir le code ci-dessous.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
z = 1:100;
scatter3(x,y,z)

Production :

Nuage de points dans le plan 3D

Nous pouvons également modifier les propriétés de la fonction scatter3() de la même manière que nous l’avons fait avec la fonction scatter().

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Plot