7
votes

Comment faire des parcelles 1-D dans Matlab?

Comment puis-je faire des parcelles dans Matlab comme ci-dessous? Exemple de parcelle 1D

Je n'aurai pas besoin d'étiquettes, vous pouvez donc les ignorer. J'ai essayé d'utiliser une parcelle 2D normale en donnant un paramètre de 0 à Y pour chaque point de données. Cela aide, mais la majeure partie de la parcelle reste vide / blanche et je ne le veux pas. graphique 1D en figure 2D p>

Comment puis-je résoudre ce problème? P> Edit: P>

Voici comment je trace (jouer avec des valeurs de YLIM n'aidez pas): P>

hold on
for i=1:120
    if genders(v_labels(i)) == CLASS_WOMAN
        plot(v_images_lda(i,:) * w_lda,0,'r*');
    else
        plot(v_images_lda(i,:) * w_lda,0,'b.');
    end
end
title('LDA 1D Plot');
ylim([-0.2 0.2]);
hold off


8 commentaires

Si vous définissez correctement le paramètre Y sur 0, votre problème "vide / blanc" pourrait ne pas être causé par la fonction de tracé. Pouvez-vous fournir plus d'informations et un code?


Je travaille sur un algorithme de classification de genre à deux classes. Je diminue la dimension à 1 à l'aide d'une analyse discriminante linéaire (LDA) et je tiens à le tracer gentiment. Mettez simplement, j'ai un ensemble de chiffres que je veux tracer sur l'axe X.


@kolisivra Eh bien, je déteste souligner l'évidence, mais avez-vous essayé d'imprimer le jeu de données que vous essayez de comploter pour que tout soit en ordre?


@ P.R. Qu'entendez-vous par «dans l'ordre»?


@kolistivra Comme dans vous n'avez aucune orientation et que le jeu de données tracé est en réalité 2D. Essayez de placer v_images_lda (i :) * w_lda dans une variable tempe avant de le traquer. De cette façon, vous pouvez regarder la variable TEMP et voir ce qui est effectivement tracé.


@ P.R. J'ai essayé (bien que j'étais sûr de toute façon =)), les données sont en réalité 1D, c'est-à-dire V_IMages_LDA (i, :) * w_lda retourne juste un seul numéro.


@kolistriva hmm bien je suppose que c'est votre problème, vous avez besoin d'un tableau pour parcourir. Essayez v_images_lda (i, :). * W_lda (remarquez le '.' Avant '*')


@kolistriva en fait, je me suis trompé de gratter qui ... je suis désolé de n'avoir rien d'autre :(


4 Réponses :


3
votes

OK, donc le plus proche que je suis venu à résoudre ce problème est le suivant xxx

ainsi en bref, j'ai caché l'axe d'origine et créé une nouvelle située à 0 de l'axe d'origine, et Comme je ne pouvais pas supprimer complètement l'axe des Y, j'ai défini la couleur de la couleur de fond de la figure. Vous pouvez ensuite décider si vous souhaitez également jouer avec les marques de tick de l'axe X.

J'espère que cela vous aide!


0 commentaires

11
votes

Un moyen de faire cela serait d'ajuster le ' Xlim ' , ' ylim ' et 'dataspectratio' < / code> propriétés des axes afin qu'il rend essentiellement une seule ligne. Voici un exemple: xxx

et vous obtiendrez la parcelle suivante:

 Entrez la description de l'image ici


0 commentaires

6
votes

Voici un moyen de reproduire votre silhouette avec dsxy2figxy et Annotate . dsxy2figxy peut être difficile à trouver la première fois, car ce n'est pas vraiment sur votre chemin. Il fait partie du paquet MATLAB et est fourni dans les exemples de fonctions. Vous pouvez le rejoindre en la recherchant dans les documents de l'aide et une fois que vous l'avez trouvé, ouvrez-le et enregistrez-le dans un dossier de votre chemin. XXX

Ceci produira la figure suivante:

Entrez la description de l'image ici

C'est une sorte de manière pirate de Faites-le, comme j'ai trompé Matlab dans l'impression d'un seul sous-lieu. Tous les formats rastralisés ( JPEG , png , etc.) ne vous donneront pas le même résultat, car ils imprimeront tous tout le chiffre, y compris les sous-parcelles non déclarées " ai été. Donc, pour obtenir cet effet, il doit s'agir d'un EPS , et cela fonctionne avec elle, car EPS utilise beaucoup de boîtes de sélection ... de sorte que tout le blanc sans signification est coupé. Vous pouvez ensuite convertir cela en un autre format souhaité.


0 commentaires

-1
votes

Très naïve, mais une solution utile.

Terrain en 2D à l'aide de la fonction de tracé MATLAB. Ensuite, utilisez Modifier les propriétés de la figure la compressez à l'axe de l'axe, vous avez besoin d'un tracé 1D !! J'espère que cela aide :)


0 commentaires