获取绘图的只读属性名称列表

cco*_*ook 6 matlab

如果要通过属性结构复制绘图,则需要过滤掉只读属性(例如Annotation,BeingDeleted,Parent,Type).有没有办法获得对象的只读属性列表?

这个问题来自一个相关的问题

我如何从情节处理程序中绘图?

use*_*905 6

我开始讨论上一个问题,试图动态找出哪些字段是可设置的.

我并没有完全得到它的工作,但我可以通过使用的返回值之间的差异弄个(大部分)的只读属性set(h)get(h).

这里没有显示的唯一属性是Parent-property,它是可设置的,但在上一个问题中不应该更改.

以下是我获得不可设置属性的方法:

h = plot(1:0.2:10);
xx=get(h)

close all
h2 = plot(0);
settableHandles = set(h2);
settableNames = fieldnames(settableHandles);
allHandles = get(h2);
allNames = fieldnames(allHandles);

nonSettableHandles = rmfield(allHandles,settableNames);
nonSettableNames = fieldnames(nonSettableHandles)
Run Code Online (Sandbox Code Playgroud)

这产生了一个细胞nonSettableNames:

nonSettableNames = 

    'Annotation'
    'BeingDeleted'
    'Type'
Run Code Online (Sandbox Code Playgroud)

  • 我猜你可以把所有东西都减少到一个班轮:`fieldnames(rmfield(get(h),fieldnames(set(h))))`.非常聪明,+ 1. (2认同)
  • @EitanT +1为一个班轮! (2认同)