【问题标题】:Redraw a figure saved in 2013b in 2014b在2014b中重绘2013b中保存的图
【发布时间】:2015-01-04 06:04:16
【问题描述】:

由于 MATLAB 在 R2014b 中更改了它的图形引擎,我决定重新运行我的一些代码以获得更好看的图形。不幸的是,我拥有的最后一个代码需要很长时间才能运行,我想高度避免重新运行代码以获得更好的数字。

我将结果保存在 R2013b 中的 .fig 文件中。但是,如果我在 R2014b 中打开它,它仍然是旧格式。

是否可以使用 MATLAB R2014b 绘图引擎重绘图形?如果是,我该怎么做?

注意: 从字面上看,图形是使用新引擎打开和绘制的,但是它保留了旧格式。虽然带有title() 命令的新图形会绘制一个漂亮的大而粗体的标题,但如果使用“drawnow”重绘这个图形或者我为它生成代码,格式保持不变。

示例:此图创建于 2013b,并于 2014b 重新绘制。您可以看到标题与 title('whatever') 在新图形句柄中绘制的格式不同。看起来“.fig”保存并设置了它生成的版本的默认值。因此,重绘时,绘图颜色、标题、标签等看起来就像旧的图形句柄。

这可以使用以下代码进行测试。请注意,这是一个过于简单的问题,问题不是明确地与标题或标签有关,而是所有一般的图形内容。

rng(1)


figure()
x = 1:50;
y = rand(1, 50);

plot(x,y)
title('this NICE Title')
xlabel('labels!')
ylabel('some other labels','Interpreter','Latex')

如果这段代码在2013b和2014b运行,在两者中都保存为fig,然后在两者中都打开为fig,会出现接下来的2个数字:

2013b 无花果文件:http://s000.tinyupload.com/index.php?file_id=02053933004513599550

【问题讨论】:

  • drawnow 什么都不做?此外,它是一个简单的情节吗(plotscatter 输出?)。如果是这样,您可以很容易地get 出图中的数据。 (轮廓或类似的东西——不是那么容易)。
  • @nkjt 绝对不是一个简单的情节。它有 12 个子图,它们的数据量不同。
  • 你能把原图上传到某个地方吗?
  • @AnderBiguri:你可以试试copyobj吗?类似这样的东西:stackoverflow.com/a/4010043/97160
  • @AnderBiguri:我的想法是先hgload这个图,然后在它上面使用copyobj创建一个新副本,希望它可以用新的图形系统渲染...无论如何,我只是尝试在我的最后重现问题并且我不能;我使用了一个保存在 R2014a 中的简单绘图,然后将其加载到 R2014b 中的 FIG 文件,并使用新图形(平滑线和新颜色等)进行渲染...你能分享导致的原始 FIG 文件吗问题,或者至少创建一个更简单的问题来展示问题?

标签: matlab matlab-figure matlab-hg2


【解决方案1】:

有一个迂回的方法可以做到这一点——只需使用hgopen 加载图形,然后提取数据以在 2014b 中重新绘制它:

h1=hgopen('test.fig');              % h1 = handle to the figure
allaxes=get(h1,'children');         % allaxes = array with axes handles 
for a=1:length(allaxes)
    ax=allaxes(a);
    allines=get(ax,'children');     % all lines in current axes
    for l=1:length(allines)
        lin=allines(l);
        values=get(lin,'ydata');    % values of the current line
        subplots{a}{l}=values;
    end
end

然后您可以使用subplots 元胞数组再次手动绘制绘图。这是一种无聊的方法,但如果重新生成输出需要很长时间,可能值得尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 2015-06-17
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2011-03-15
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多