0

将 matlab 时间序列图保存为 png 时出现问题。内部 matlab 窗口显示的 xticks 数量是保存图像的一半。这会导致保存的绘图中出现重叠的刻度标签。

这是一个示例最小代码:

data = (1:12);

time(1,:) = '10-Sep-2012 13:42:10';
time(2,:) = '10-Sep-2012 13:43:10';
time(3,:) = '10-Sep-2012 13:44:10';
time(4,:) = '10-Sep-2012 13:45:10';
time(5,:) = '10-Sep-2012 13:46:10';
time(6,:) = '10-Sep-2012 13:47:10';
time(7,:) = '10-Sep-2012 13:48:10';
time(8,:) = '10-Sep-2012 13:49:10';
time(9,:) = '10-Sep-2012 13:50:10';
time(10,:) = '10-Sep-2012 13:51:10';
time(11,:) = '10-Sep-2012 13:52:10';
time(12,:) = '10-Sep-2012 13:53:10';

ts = timeseries(data,time);
ts.TimeInfo.Format = 'dd, HH:MM:SS';

figure(1)
plot(ts);

%saveas(gca, 'tickmovetest', 'png')
print(gcf, '-dpng', 'tickmovetest')

我使用 plot 或 saveas 命令都没有关系。data 只是随机数, time 是一个等长的向量,包含像 '10-Sep-2012 13:42:10' 这样的字符串。

有没有人遇到过这个问题并找到了答案?如果 matlab 在保存绘图之前只保留它的刻度数,那就太好了。

4

1 回答 1

0

保存时,Matlab 会重新调整图形的大小。如果你没有明确指定你想要你的刻度线和标签的位置,你最终可能会得到重叠的标签。
话虽如此,有两种选择:

  1. 手动设置刻度位置和刻度标签。
  2. Matlab File Exchange 上有一个贡献,称为saveSamesize它将图形保存为与屏幕上显示的完全相同的大小。(它适用于 R2013a)。
    对于上面的示例,您可以按如下方式调用它:

    saveSameSize(gcf, 'format', 'png', 'file', 'tickmovetest.png');
    

我的建议是积极设置刻度位置和标签以避免任何意外。

PS
您的示例不会为我生成重叠标签,但是,此print命令会:

print(gcf, '-dpng','-r200','tickmovetest')
于 2013-08-12T14:40:56.870 回答