Matlab:Le traçage en plusieurs points avec les mêmes coordonnées
-
29-10-2019 - |
Question
J'ai des données que je veux tracer dans MATLAB.Les données se compose de coordonnées x et y des points que je veux.Pour le moment, je suis à l'aide de la fonction plot pour tracer ces points.
Les données ont beaucoup de points avec les mêmes coordonnées.Maintenant, ce que je veux, c'est que les points avec les mêmes coordonnées ne pas tracer comme un point unique, mais un gros point.
Par exemple, supposons que les points sont
1,1
2,1
2,1
3,2
2,1
2,1
1,1
Alors, la parcelle doit avoir un seul point à 3,2, mais un gros point à 1,1 et même un gros point à 2,1
Quelqu'un peut-il me dire comment faire cela?
La solution
Vous pouvez utiliser un peu de créativité et de la scatter
fonction pour ce faire.
Tout d'abord, vous avez besoin de réduire vos données à une liste de points, plus le nombre de points à chaque emplacement.
Par exemple, si vous avez quelques données:
xy = [...
1,1; ...
2,1; ...
2,1; ...
3,2; ...
2,1; ...
2,1; ...
1,1];
Obtenir les points uniques, et les index uniques:
[xyUnique, ignore, ixs] = unique(xy,'rows')
C'est assez douloureux, mais on peut compter le nombre d'occurrences de chaque ligne unique à l'aide de la ixs
vecteur (il y a probablement une meilleure solution).
counts = zeros(size(xyUnique,1),1);
for ix = 1:size(counts,1);
counts(ix) = sum(ixs == ix);
end
Maintenant utiliser scatter faire un terrain que vous le souhaitez
scatter(...
xyUnique(:,1), ... %X values
xyUnique(:,2), ... %Y values
counts*20, ... %Individual marker sizes, note scale factor to make this visible
'b', ... %Marker colors
'filled'); %I think these look better filled
Autres conseils
Pour éviter les boucles, en vous appuyant sur l'exemple précédent, essayez ceci:
xy = [...
1,1; ...
2,1; ...
2,1; ...
3,2; ...
2,1; ...
2,1; ...
1,1];
[xyUnique, ignore, ixs] = unique(xy,'rows')
Cela entraînera
xyUnique =
1 1
2 1
3 2
Ensuite, nous utilisons la fonction hist
[nRows, nCols] = size(xyUnique)
xyCount = hist(ixs,nRows)
Ce qui aboutit à
xyCount =
2 4 1
Chaque valeur de xyCount est le nombre d'occurrences de chaque ligne de xyUnique.
L'utilisation de la scatter
commande de la forme:
scatter(X,Y,S)
Vous devez déterminer combien de temps les coordonnées sont répétées à définir le bon vecteur pour S.
Description:
nuages de points(X,Y,S) attire les marqueurs les tailles indiquées (S) avec une seule couleur.Ce type de graphique est également connu comme une bulle de la parcelle.
S détermine la zone de chaque marqueur (spécifié dans les points^2).S peut être un vecteur de la même longueur que X et Y ou un scalaire.Si S est un scalaire, MATLAB attire tous les marqueurs de la même taille.Si S est vide, la taille par défaut est utilisé.
Pour plus d'informations, voir la documentation.