Matlab 绘图的自定义标记 [英] Custom Markers for Matlab plot

查看:45
本文介绍了Matlab 绘图的自定义标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索过谷歌,每个人都说不支持.我想知道是否有任何开放的社区 matlab 函数可以将用户定义的 png 绘制为标记.我找到的最接近的是

要获得所需的外观,您需要对参数进行一段时间的调整.

希望有帮助

I have searched google and everyone says its not supported. I was wondering if there are any open community matlab functions which would be able to plot a user defined png as a marker. The closest I found was http://de.mathworks.com/matlabcentral/fileexchange/39487-custom-marker-plot/content/plotCustMark/plotCustMark.m . But it doesn't serve the intended purpose . Let me know if its even possible for me to write something up for this ! Thanks.

Additional Problem : Okay I have this weird problem now . my png has a black background !! I dont understand why. I tried to lower the alpha value still doesn't work.

Solution : The problems I mentioned in the comments to @brainkz can be solved by

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

Method : Import the transparency settings of your image through

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

and later set

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

Clarification : The images were all transperant but since I was overlaying it over another image it turned the current images background to default black. I posted a solution to this problem which I guess would be really useful to a lot of people.

解决方案

imagesc can put the png on you plot. We can avail ourselves of this in the following way:

Define user data:

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

Load the marker image:

marker = imread('icon.png');

Define marker size and adjust the x and y data:

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

Then, we put our loaded image on the plot at the specified points

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

At the end, you are likely to get the following:

To achieve the desired appearance, you would need to play with the parameters for a while.

Hope that helps

这篇关于Matlab 绘图的自定义标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆