- what your data looks like
- what the error message is to correct your implementation
How to use different markers for different X,Y pairs?
6 views (last 30 days)
Show older comments
I'd like to have separated (X,Y) points, marked by different markers and legend that describes those points. When I use plot(x1,y1,'+',x2,y2,'o') I have error message. Solution with plot()... hold on; plot()... is not convenient because in such a case legend not shows all pairs information. Thanks for ideas.
4 Comments
Ali
on 29 Oct 2017
if true
--------------------------------------------------- code start
This is an example for your case
Input is "Input_Data", two dimension matrix
Marker_Counter=1;
figure6=figure;
Markers = {'+','o','*','x','v','d','^','s','>','<'};
for i=1:10:size(Input_Data,1)
TPR=Input_Data(i:i+9,7);
FPR=Input_Data(i:i+9,8);
plot(FPR,TPR,strcat('-',Markers{Marker_Counter}));
Marker_Counter=Marker_Counter+1;
hold on
end
plot([0.5 1],[0.5 1],'--');
legend('Minpts = 100','Minpts = 200','Minpts = 300','Minpts = 400','Minpts = 500','Minpts = 600','Minpts = 700','Minpts = 800','Minpts = 900','Minpts = 1000','','Location','SouthEast');
xlabel('FPR or (1-Specificity)','FontSize',12,'FontWeight','bold'); ylabel('TPR or Spensitivity)','FontSize',12,'FontWeight','bold');
title('ROC Space');
close(gcf);
-------------------------------------------- code end
end
--------------------------------------- picture link preview
Accepted Answer
Image Analyst
on 30 May 2016
Plot by using two separate calls to plot:
plot(x1(1),y1(1),'>','MarkerEdgeColor','y','MarkerFaceColor','m');
hold on
plot(x2(2),y2(2),'<','MarkerEdgeColor','m','MarkerFaceColor','c');
or whatever - not sure exactly what is a point and what is an array with your x,y. But anyway, this works - I've tried it.
3 Comments
Image Analyst
on 12 Aug 2016
Did you try the legend() function?
legend('This is (X1, Y1)', 'This is (X2, Y2)');
More Answers (2)
dpb
on 30 May 2016
Edited: dpb
on 1 Jun 2016
Can't use the named names multiple times in the same call, per the documentation: "Property name-value pairs apply to all the lines plotted. You cannot specify name-value pairs for each set of data."
You'll have to use
hL=plot(x1,y1,lspec1,x2,y2,lspec2,...);
then
set(hL,{'markerfacecolor'},{cell array of colors}, ...
{'markeredgecolor'},{cell array of colors})
to do this it appears. NB: that to set multiple handles to different values you have to use cell arrays on both. This is documented at set with examples; it can get pretty complex, but is doable.
ADDENDUM
Just came to me that you can simplify just a tad by using the color in the linestyle string...
hL=plot(1.1,2.3,'>r',1.8,1.8,'<g');
xlim([1 2]), ylim([1 3])
set(hL,{'markerfacecolor'},{'r';'g'})
works and illustrates the cell array usage w/ set mentioned earlier.
set(hL,{'markerfacecolor'},{'r';'g'},'markeredgecolor','k')
is a variation when is single value with multiple handles.
0 Comments
Walter Roberson
on 31 May 2016
Property / Value pairs must be grouped together at the end. You cannot mix them with data. As soon as the first one is detected, it is assumed that everything after is a property / value pair.
1 Comment
dpb
on 1 Jun 2016
I see even I quit reading too soon, Walter...it is documented near the very end of Description section: "Property name-value pairs apply to all the lines plotted. You cannot specify name-value pairs for each set of data."
So, my comment earlier of it being undocumented was in error...I'll amend that for the record.
See Also
Categories
Find more on 2-D and 3-D Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!