1

我正在尝试解决我在 MATLAB 中制作的绘图上的轴的一个棘手问题。我想显示温度预测的日期和时间(因此绘制的日期标签本质上是预测“有效”的小时,以 3 小时为增量)。值的范围大约是 5 天,但是我当前的图只显示图上的前五个预测时间(而不是整个范围,但只有几个点),如下图所示:

不正确的时间轴

我目前通过创建包含日期标签的字符串向量(从 DateVectors 矩阵生成)来显示这些标签。执行此操作的代码是:

% Format all the dates into strings that can be displayed on the graph
for rid = 1:numRows
    rowdate = formattedDates(rid,:);   % DateVector for this forecast step
    fcstDateStrs{rid} = datestr(rowdate, 'dd-mmm-yyyy HHZ');
end

然后,我将这些日期作为 y 轴与 line set(gca,'XtickLabel', {}, 'YtickLabel', fcstDateStrs)。有没有办法可以缩放该轴上的标签以显示所有正确缩放的日期标签(这样第一个就像“03-Oct-2012 06Z”,最后一个就像“08-Oct- 2012 06Z")?

4

1 回答 1

1

您将不得不弄乱ytick轴的属性:

ticks = get(gca, 'ytick') 

会给你一个当前在 -axis 上分配的刻度线的向量X。您可以使用这些来设置所需的刻度数:

newTicks = linspace(ticks(1), ticks(end), numel(fcstDateStrs));
set(gca,...
    'Yticks'     , newTicks,...
    'YtickLabels', fcstDateStrs);

请注意,由于您现在已手动设置刻度和刻度标签,因此重新缩放绘图会有些尴尬——只有在您相当确定绘图不会再发生太大变化时才执行此步骤。

于 2012-10-04T04:48:54.980 回答