2016-08-04 83 views
4

我已經搜索谷歌,大家都說它不支持。我想知道是否有任何開放的社區matlab函數能夠將用戶定義的png繪製爲標記。我發現最近的是 http://de.mathworks.com/matlabcentral/fileexchange/39487-custom-marker-plot/content/plotCustMark/plotCustMark.m。但它不符合預期的目的。 讓我知道,如果它甚至有可能爲我寫點東西!謝謝。自定義標記爲Matlab陰謀

其他問題:好的,我現在有這個奇怪的問題。我的PNG有黑色背景!我不明白爲什麼。我試圖降低alpha值仍然不起作用。

解決方案:我在評論@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); 

澄清:圖像都是transperant,但由於我將它覆蓋在另一個圖像上,它將當前圖像背景變成默認黑色。我發佈了一個解決這個問題的方案,我想對很多人來說真的很有用。

回答

9

imagesc可以把png放在你的陰謀。我們可以通過以下方式利用自己的這個:

定義用戶數據:

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

裝入標記圖像:

marker = imread('icon.png'); 

定義標記大小,調整xy數據:

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

非常感謝。我認爲這需要在我的情節中用不同的層次進行修補。但到目前爲止,它確實做了我想要的事情。乾杯! –