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.
Add markers in one of these ways: Include a marker symbol in the line-specification input argument, such as plot(x,y,'-s') . Specify the Marker property as a name-value pair, such as plot(x,y,'Marker','s') .
Markers. Specify Combinations of Colors, Line Styles, and Markers. Modify Line Width, Marker Fill, and Marker Outline. See Also. Related Topics.
Plot Multiple Lines By default, MATLAB clears the figure before each plotting command. Use the figure command to open a new figure window. You can plot multiple lines using the hold on command. Until you use hold off or close the window, all plots appear in the current figure window.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With