2016-08-04 3 views
4

Я искал google, и все говорят, что его не поддерживают. Мне было интересно, есть ли какие-либо открытые функции mclab сообщества, которые могли бы построить пользовательский png в качестве маркера. Ближайший я нашел http://de.mathworks.com/matlabcentral/fileexchange/39487-custom-marker-plot/content/plotCustMark/plotCustMark.m. Но это не соответствует намеченной цели. Сообщите мне, если это возможно для меня, чтобы написать что-то для этого! Благодарю.Пользовательские маркеры для графика Matlab

Дополнительная проблема: Хорошо. У меня сейчас эта странная проблема. мой png имеет черный фон !! Я не понимаю, почему. Я пытался снизить значение альфа-функции, но все же не работает.

Решение: проблемы я уже упоминал в комментариях к @brainkz может быть решена с помощью

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

Метод: Импорт настроек прозрачности вашего изображения через

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

и позднее установлено

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

Уточнение: изображения были все трансперенные, но поскольку я накладывал их поверх другого изображения, он превратил текущий фон изображения в черный цвет по умолчанию. Я опубликовал решение этой проблемы, которое, я думаю, было бы очень полезно для многих людей.

ответ

9

imagesc может разместить png на вашем участке. Мы можем воспользоваться этим следующим образом:

Определить пользовательские данные:

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

Загрузить маркер изображения:

marker = imread('icon.png'); 

Определить размер маркера и корректировать данные x и y:

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 

Затем мы помещаем наше загруженное изображение на участок в заданных точках

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 

В конце концов, вы, вероятно, получит следующее:

enter image description here

Для достижения желаемого внешнего вида, вам нужно будет играть с параметрами на некоторое время ,

Надеюсь, что поможет

+0

Не лучше ли использовать «ось равным» вне цикла? –

+0

Хорошее предложение @Sardar_Usama – brainkz

+0

Большое спасибо. Я думаю, что это потребует немного возиться с разными слоями в моем заговоре. Но на данный момент он делает то, что я намеревался сделать. Приветствия! –

Смежные вопросы