Matlab:重新标记默认的x-ticks

时间:2018-03-26 10:12:12

标签: matlab plot matlab-figure

在Matlab图中,我将x轴定义为预先累积的数组timeInSec

y = data;
x = timeInSec;
plot(x , y);

图中生成的x轴如下所示:

enter image description here

这里的刻度和刻度值(00.511.522.5)都是自动的 - 由Matlab生成。我很高兴他们。

但现在我想定制更改tick-value标签。类似的东西:

timeInHrMin = datestr(tickValues, 'HH:MM')
xticklabels(timeInHrMin)

但是如何抓住所有显示的tickValues?我需要它们保持自动生成。因此,我必须以某种方式仅抓取所显示的内容(00.511.522.5)并重新标记他们与xticklabels

这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

您可以按照Sardar Usama建议的get(gca,'XTick')或访问您图中的属性CurrentAxes.XTick来获取所有显示的刻度值。

至于重新标记,有一个关于使用xticklabels的一个小而重要/烦人的细节。使用后,不再自动生成刻度线。为了解决这个问题,您可以在抓取和修改标签之前使用xtick('auto')

我还猜测你想要在放大/缩小时刷新滴答声。您可以使用zoom及其回调来完成此操作。

下面的代码应该清楚明白:

function so
    % meaningless data to have some ticks
    fs = 48000;
    t = 5;
    tvect = 0:1/fs:t-1/fs;
    a = sin(2*pi*tvect);

    % plotting data
    fig = figure;
    plot(tvect, a)

    % modifying the ticks for the first time after creating the plot
    mypostcallback(fig, struct('Axes', fig.CurrentAxes));

    % modifying post zoom callback
    h = zoom(fig);
    h.ActionPostCallback = @mypostcallback;
end

function mypostcallback(obj,evd)
    % turning on auto generation of ticks after previous usage of xticklabels
    xticks('auto')
    % part where you modify tick labels however you want. 
    % In my case simply adding 10 to the original values.
    xticklabels(evd.Axes.XTick + 10)  
end
相关问题