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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top