在不同的现有功能上绘制单点

时间:2016-07-19 22:51:05

标签: matlab plot

我试图通过使用以下代码绘制4个不同的函数,我设法做到这一点:

clear all;clc;close all;

normalDiffuse = [2 7.4567
3 7.1941
4 6.9443
5 6.7455
6 6.5636
7 6.3707
8 6.2483
10 5.9840
14 5.5388
16 5.3825
20 5.0466
23 4.8314];

diffuseWithNoise = [2 7.9944
3 7.9237
4 7.7955
8 7.2938
10 7.1093
11 7.0366];

specularSurface = [2 6.3446
4 5.9177
6 5.8365
7 5.6191];

shadows = [2 8.6936
4 8.5689
8 8.5490
16 8.4074
32 7.7302
33 7.6296];

xmarkers = ;

figure(1);
p = plot(normalDiffuse(:,1),normalDiffuse(:,2),...
    diffuseWithNoise(:,1),diffuseWithNoise(:,2),...
    specularSurface(:,1),specularSurface(:,2),...
    shadows(:,1),shadows(:,2));
%set(p(1),'Marker','o');
set(p(1),'Color',[1 0 0]);
set(p(1),'MarkerFaceColor',[1 0 0]);
%set(p(2),'Marker','hexagram');
set(p(2),'Color',[0 1 0]);
set(p(2),'MarkerFaceColor',[0 1 0]);
%set(p(3),'Marker','square');
set(p(3),'Color',[0 0 1]);
set(p(3),'MarkerFaceColor',[0 0 1]);
%set(p(4),'Marker','diamond');
set(p(4),'Color',[1 0 1]);
set(p(4),'MarkerFaceColor',[1 1 0]);
for i=1:4
    set(p(i),'LineStyle','-');
    set(p(i),'MarkerSize',10);
    set(p(i),'MarkerEdgeColor',[0 0 0]);
end
grid;
legend('Normal diffuse', 'Diffuse with noise','Specular surface',...
    'Shadows');
xlabel('SPP');
ylabel('MSRE');

我现在想要添加的不是另一个功能,而是每个功能的单点。例如,对于第一组点,我希望在相对函数图上,当X = 4时,它会在函数本身上出现一些符号(例如一个圆圈)。所以我希望其他函数相同,但对于其他函数值。最后,我想在图例中添加特定符号(在我们的例子中为圆圈)作为特殊值。愿你帮助我吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用hold on在图上绘制额外的功能。例如,你可以这样做:

x=1:1:100;
y=sin(x);
figure,plot(x,y)
hold on, plot(x(4),y(4),'o','MarkerSize',20);
legend('data','point')

然后,您可以编辑图形,并删除不需要的图例或更改文本/尺寸