综合的图形对象类型列表matlab

问题描述 投票:3回答:2

我找不到一个全面的图形对象类型列表,这对于在matlab图中找到修改对象特别有用,例如:

findall(gcf,'Type','Line'); %get all line objects in the current figure

更确切地说:我正在寻找参数'Type'之后的可能输入列表。

matlab matlab-figure
2个回答
4
投票

我不知道获取综合列表的方法,但您可以获取现有对象的类型列表:

types = unique(get(findall(gcf, '-property', 'Type'), 'Type'));

实际上我认为这已经足够了,因为我们对那些不存在的对象不感兴趣。


1
投票

您可以通过嵌入一个图表类型的包访问所有图形对象。为此,使用metaclass浏览绘图类型的元数据:

h = plot(rand(10,1));
% h is of type Line

现在我们使用元类来获取有关类Image的所有元数据:

metah = metaclass(h);

一个很好的特性是它引用了ContainingPackage,我们可以通过ClassList访问所有类。在每个类中,您可以获取名称,类元数据以及在类层次结构中导航的方法。

为了我们的目的,我简单地获得原始图形的完整列表

{metah.ContainingPackage.ClassList.Name}

它在R2017b上给出了以下列表(排序后):

{'matlab.graphics.chart.primitive.Area'         }
{'matlab.graphics.chart.primitive.Bar'          }
{'matlab.graphics.chart.primitive.Binscatter'   }
{'matlab.graphics.chart.primitive.ConstantLine' }
{'matlab.graphics.chart.primitive.Contour'      }
{'matlab.graphics.chart.primitive.Data3D'       }
{'matlab.graphics.chart.primitive.ErrorBar'     }
{'matlab.graphics.chart.primitive.FunctionLine' }
{'matlab.graphics.chart.primitive.GraphPlot'    }
{'matlab.graphics.chart.primitive.Heatmap'      }
{'matlab.graphics.chart.primitive.Histogram'    }
{'matlab.graphics.chart.primitive.Histogram2'   }
{'matlab.graphics.chart.primitive.Line'         }
{'matlab.graphics.chart.primitive.Quiver'       }
{'matlab.graphics.chart.primitive.Scatter'      }
{'matlab.graphics.chart.primitive.Stair'        }
{'matlab.graphics.chart.primitive.Stem'         }
{'matlab.graphics.chart.primitive.Surface'      }
{'matlab.graphics.chart.primitive.brushingUtils'}

最后一个不是图形基元。您可以看到它缺少像Image这样的类,可以通过相同的过程访问它们:

h = image(rand(5));
metah = metaclass(h);
sort({metah.ContainingPackage.ClassList.Name}.'}

这使:

{'matlab.graphics.primitive.Data'          }
{'matlab.graphics.primitive.Group'         }
{'matlab.graphics.primitive.Image'         }
{'matlab.graphics.primitive.Light'         }
{'matlab.graphics.primitive.Line'          }
{'matlab.graphics.primitive.Marker'        }
{'matlab.graphics.primitive.Patch'         }
{'matlab.graphics.primitive.Polygon'       }
{'matlab.graphics.primitive.Rectangle'     }
{'matlab.graphics.primitive.Surface'       }
{'matlab.graphics.primitive.SurfaceXYZData'}
{'matlab.graphics.primitive.Text'          }
{'matlab.graphics.primitive.Transform'     }

有些类似乎都在两个包中。我认为第二个列表是核心类,第一个列表是一些用于折线图的专用类(未修补)。但这只是猜测。

我想我们应该拥有所有基本的图形类,或者其他软件包中还有其他图形 - 如果有人知道这些其他软件包是什么,请告诉我们!

编辑最后我找到了列出所有图形对象的文档页面。见here

© www.soinside.com 2019 - 2024. All rights reserved.