【问题标题】:Matlab creates overlayed ticks when saving a plot as png将绘图保存为 png 时,Matlab 会创建重叠的刻度
【发布时间】:2014-06-18 23:26:49
【问题描述】:

将 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 只保留它在保存绘图之前的刻度数,那就太好了。

【问题讨论】:

  • 你能创建一个最小的工作示例,我可以复制/粘贴来重现你的错误吗?
  • 您好 Schorsch,感谢您的回复。我离开了一段时间,抱歉我的回复晚了。我添加了几行以使代码 sn -p 更方便。约翰内斯

标签: matlab save png


【解决方案1】:

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

  1. 手动设置刻度位置和刻度标签。
  2. 在 Matlab 文件交换上有一个贡献,称为 saveSamesize,它将图形保存为与屏幕上显示的完全相同的大小。 (它适用于 R2013a)。
    对于上面的例子,你可以这样称呼它:

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

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

PS
您的示例不会为我生成重叠标签,但是,这个print-command 会:

print(gcf, '-dpng','-r200','tickmovetest')

【讨论】:

  • 谢谢 Schorsch!我会研究 saveSameSize,它看起来很有希望。很高兴知道这是一个常见问题。谢谢!
猜你喜欢
  • 2012-05-15
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2011-03-15
  • 2018-12-06
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多