分散2个y轴和datetick

时间:2015-07-27 21:35:10

标签: matlab scatter

我真的很感激一些帮助。

我必须使用独立的数据集。每个数据集包含两个变量:日期(作为日期编号)和相应的数据。我需要在一个散点图上绘制两个数据集,其中日期位于x轴和两个y轴上。我一直在尝试使用以下代码:

figure(1); 
scatter(x1,y1,'g'); 
set(gca); 
ax1=gca;
set(ax1,'YColor','g'); 
ax2 = axes('Position',get(gca,'Position'),'YAxisLocation','right', XTick'[],'Color','none','YColor','r'); 
hold on; scatter(x2,y2,'r');

现在,这会在右侧给出正确的y轴,但是在右侧,我最终得到两个重叠的y轴。 此外,我需要更改x轴,以便显示日期而不是日期数。我试图将datetick合并到代码中,但它再次给了我两个重叠的x轴。

有谁知道如何去做?

谢谢

1 个答案:

答案 0 :(得分:0)

我用您的示例输入尝试了您的脚本,发现没有问题。无论如何,这是一个使用matlab函数plotyy的解决方案,它适用于这样的简单图:

%generate input
x1=[732490 732509 732512 732513 732521 732528];
y1=[7.828 7.609 22.422 14.758 26.258 1.477];
x2=[732402 732403 732404 732404 732433];
y2=[0.693 0.645 0.668 0.669 0.668];

figure(1); 
[ax, h1,h2]=plotyy(x1,y1,x2,y2,'scatter');

%set colors manually
green=[0 1 0];
red=[1 0 0];
set(h1,'cdata',green);
set(h2,'cdata',red);
set(ax(1),'ycolor',green);
set(ax(2),'ycolor',red);

%note the 'keepticks' and 'keeplimits' options
datetick(ax(1),'x','yyyy-mm-dd','keepticks','keeplimits');
datetick(ax(2),'x','yyyy-mm-dd','keepticks','keeplimits');

enter image description here

如果没有datetick调用,plotyy函数会同步图中的xtick。当你调用datetick时,它会重新计算滴答,除非你明确告诉它,看到选项keepticks,这被视为两组x轴(即使{ {1}}坐标相同,刻度线位于不同位置)。需要x选项才能保留原始keeplimits。显然需要一些更多的手工工作来获得这样的情节。

另请注意,我手动设置了轴和数据颜色:可能有一种更优雅的方法。

更新xlim最初缺少

Update2 :更改了示例数据以对应更新的问题评论