【问题标题】:How modify some x-axis values in a .fig file in MATLAB?如何在 MATLAB 中修改 .fig 文件中的一些 x 轴值?
【发布时间】:2013-11-02 11:46:16
【问题描述】:

我有一个 .fig 文件,我只想修改 x 轴上的 2 个值。

如果我没有绘图的源代码,怎么可能?只有一个 .fig 文件。

【问题讨论】:

  • 修改标签还是实际值?
  • @LuisMendo 实际值

标签: matlab matlab-figure


【解决方案1】:

根据您的 cmets:您有一对 x- 和 y- 轴,其中包含多个绘图,并且您想要修改 .

打开 .fig 文件并执行:

aux = get(gca,'Children'); %// get all plots within current axes
n = 1; %// or 2 or 3, whichever plot you want to change
x = get(aux(n),'XData'); %// x values of selected plot

这将为您提供变量 x 中的 x 轴值。根据需要修改该变量,然后将其放回绘图中:

set(aux(n),'XData',x)

【讨论】:

  • 我有一个包含三个子图的情节。我收到此错误:使用 get Invalid property found 时出错。对象名称:文本属性名称:'XData'。
  • 我的意思是没有子情节。子图。图中的三个多项式函数。
  • 请立即查看答案
【解决方案2】:

get(gca,...) 提取数据可能是最直接的解决方案。但是,还有一些其他晦涩但有用的 MATLAB 功能值得一提。

首先是 MATLAB 从图形生成 M 文件的能力,可用于以编程方式重新创建和修改图形。只需单击以下菜单项,您将在编辑器中获得一个新功能,如function createfigure(X1, Y1),它将完全重新创建图形,但带有一些新数据X1Y1

另一件值得一提的是 .fig 文件实际上是 MAT 文件,其中包含指定图形的数据。例如,以下命令会将 .fig 数据加载到 MATLAB 中的 struct 中,您可以轻松访问绘图数据:

>> f = load('testjunk.fig','-mat')
f = 
    hgS_070000: [1x1 struct]
>> axesNum = 1; seriesNum = 1;
>> series = f.hgS_070000.children(axesNum).children(seriesNum)
series = 
          type: 'graph2d.lineseries'
        handle: 172.0051
    properties: [1x1 struct]
      children: []
       special: []
>> X1 = series.properties.XData
ans =
    0.0305    0.7441    0.5000    0.4799    0.9047
>> Y1 = series.properties.YData
ans =
    0.6099    0.6177    0.8594    0.8055    0.5767

混合搭配以完成工作。

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多