【问题标题】:yticks does not show correctly when mixing plotyy and semilogy in matlab在 matlab 中混合 plotyy 和 semilogy 时,yticks 无法正确显示
【发布时间】:2012-06-04 05:41:53
【问题描述】:

我正在使用 plotyy 在同一图中的不同轴上绘制两条曲线。第一条曲线的范围是 10^-4 到 10^-1,第二条曲线的范围是 0 到 10。如果我按以下方式绘制,

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

它们都将被绘制为符号学并且在 y 中具有正确的比例。但我不想以 log10 比例显示 y2,所以我改变了

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

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

【问题讨论】:

  • 我想我以前遇到过这种情况,解决方案是手动设置刻度线,这有点棘手,因为有两组 y 刻度可以使用!明天我会尝试找到代码。

标签: matlab plot


【解决方案1】:

你可以试试这个:

[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')

【讨论】:

  • 这就是我要建议的,除了我之前不知道box off 的东西。但是box off 不仅从轴的“另一”侧删除了刻度线,它还从图的顶部删除了刻度线(和边界线)。我通常做的是确保每边都有相同数量的刻度线。这样做的好处是您可以打开网格线并让事情看起来不错。
【解决方案2】:

试试这个:

%# 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')

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2014-08-11
    • 2014-09-22
    • 1970-01-01
    • 2020-04-11
    • 2020-05-19
    相关资源
    最近更新 更多