将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命令并不重要。数据只是随机数,时间是一个等长的向量,包含像'10 -Sep-2012 13:42:10'这样的字符串。
有没有人遇到过这个问题并找到答案? 如果matlab在保存绘图之前只保留它的刻度数,那将是很好的。
答案 0 :(得分:0)
Matlab在保存时重新调整数字大小。如果您没有明确指定您的滴答标记和标签的位置,则最终可能会出现重叠标签 话虽如此,有两种选择:
在Matlab文件交换中有一个名为saveSamesize
的贡献,它将图形保存为与屏幕上显示的大小完全相同。 (适用于R2013a)
通过上面的示例,您可以按如下方式调用它:
saveSameSize(gcf, 'format', 'png', 'file', 'tickmovetest.png');
我的建议是积极设置滴答位置和标签以避免任何意外。
PS
您的示例不会为我生成重叠标签,但是,此print
- 命令会执行:
print(gcf, '-dpng','-r200','tickmovetest')