4 votes

Marqueurs personnalisés pour le tracé Matlab

J'ai fait des recherches sur Google et tout le monde dit qu'il n'est pas pris en charge. Je me demandais s'il existait des fonctions matlab ouvertes à la communauté qui permettraient de tracer un png défini par l'utilisateur comme marqueur. La fonction la plus proche que j'ai trouvée est http://de.mathworks.com/matlabcentral/fileexchange/39487-custom-marker-plot/content/plotCustMark/plotCustMark.m . Mais il ne sert pas le but recherché. Je voudrais savoir s'il m'est possible d'écrire quelque chose à ce sujet ! Je vous remercie.

Problème supplémentaire : Ok j'ai ce problème bizarre maintenant . mon png a un fond noir ! !! Je ne comprends pas pourquoi. J'ai essayé de baisser la valeur alpha mais ça ne marche toujours pas.

Solution : Les problèmes que j'ai mentionnés dans les commentaires à @brainkz peuvent être résolus par

http://de.mathworks.com/matlabcentral/answers/144411-displaying-image-over-background-making-top-image-background-color-transparent

Méthode : Importer les paramètres de transparence de votre image par le biais de

[marker,map,transperancy ] = imread('car.png');

et, plus tard, de fixer

handleIm = imagesc([x_low x_high], [y_low y_high], marker)
set(handleIm ,'AlphaData',transperancy);

Clarification : Les images étaient toutes transparentes, mais comme je les superposais à une autre image, l'arrière-plan de l'image courante devenait noir par défaut. J'ai posté une solution à ce problème qui devrait être utile à beaucoup de gens.

9voto

brainkz Points 1261

imagesc peut mettre le png sur votre parcelle. Nous pouvons en profiter de la manière suivante :

Définir les données de l'utilisateur :

x = 1:10;
y = 5*rand(size(x)) + 2.5;

Charger l'image de marque :

marker = imread('icon.png');

Définir la taille du marqueur et ajuster la x et y données :

markersize = [1,1]; %//The size of marker is expressed in axis units, NOT in pixels
x_low = x - markersize(1)/2; %//Left edge of marker
x_high = x + markersize(1)/2;%//Right edge of marker
y_low = y - markersize(2)/2; %//Bottom edge of marker
y_high = y + markersize(2)/2;%//Top edge of marker

Ensuite, nous plaçons notre image chargée sur le graphique aux points spécifiés

for k = 1:length(x)
    imagesc([x_low(k) x_high(k)], [y_low(k) y_high(k)], marker)
    hold on
end
axis equal
hold off

A la fin, vous obtiendrez probablement ce qui suit :

enter image description here

Pour obtenir l'aspect souhaité, il faut jouer avec les paramètres pendant un certain temps.

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X