2012-06-04 139 views
0

我在plotyy中绘制了同一图中不同轴上的两条曲线。第一条曲线的范围是10^-4至10^-1,第二条曲线的范围是0至10.如果我以下列方式绘制,则可以使用以下方式绘制曲线:在matlab中混合plotyy和semilogy时,yticks显示不正确

[AX,H1,H2] = plotyy(x,y1, x,y2,'semilogy','semilogy');

它们都将绘制为半圆形,并且在y中具有正确的比例。但我不想以log10刻度显示y2,所以我改变了

[AX,H1,H2] = plotyy(x,y1,x,y2,'semilogy','plot');

但是,在左右y轴上,刻度线只显示最小和最大范围,其间的所有细节都消失了。为什么?

+0

我想我以前碰到的这个,而解决办法是手动设置刻度线,这有点棘手,因为有两套y-ticks可以使用!明天我会试着找到密码。 –

回答

1

试试这个:

%# create some data resembling what you described 
x = 1:100; 
y1 = rand(size(x))*1e-1 + 1e-4; 
y2 = rand(size(x))*10; 

%# plot 
hAx = plotyy(x,y1, x,y2, 'semilogy', 'semilogy'); 
set(hAx(2), 'YScale','linear') 

screenshot

+0

+1,以获得最佳结果的最简单解决方案。太好了! –

2

你可以试试这个:

[AX, H1, H2] = plotyy(x, y1, x, y2, 'semilogy', 'plot'); 

% set yticks for the left axis 
set(AX(1), 'ytick', yourDesiredYticks1) 
set(AX(1), 'box', 'off') % to remove corresponding yticks on the right side of the plot 

% set yticks for the right axis 
set(AX(2), 'ytick', yourDesiredYticks2) 
set(AX(2), 'box', 'off') 
+0

这就是我所要建议的,除了我之前没有意识到盒子的东西。但是'box off'不仅从轴的“另一侧”删除蜱,它还从图的顶部删除蜱(和边界线)。我通常做的是确保每边都有相同数量的刻度线。这有一个好处,你可以打开网格线,让事情看起来像样。 –