Sie können auf alle Grafikobjekten über die Pakete zugreifen, die den Typ eines Diagramms einbetten. Verwenden Sie hierzu metaclass
durch Metadaten eines Plottyp zu gehen:
h = plot(rand(10,1));
% h is of type Line
Jetzt verwenden metaclass wir alle Metadaten über Klassen Bild zu erhalten:
metah = metaclass(h);
Ein nettes Feature ist, dass es die ContainingPackage
verweist, in dem wir alle Klassen durch ClassList
erreichen können. In jeder Klasse können Sie den Namen, die Klassenmetadaten und Möglichkeiten zum Navigieren durch die Klassenhierarchie abrufen.
Für unsere Zwecke, erhalte ich simmply die komplette Liste der primitiven Grafiken mit
{metah.ContainingPackage.ClassList.Name}
Es gibt die folgende Liste (nach dem Sortieren) auf 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'}
letzte ist keine Grafik Primitive. Sie können sehen, dass es Klassen wie Image
fehlt, die durch den gleichen Prozess zugegriffen werden kann:
h = image(rand(5));
metah = metaclass(h);
sort({metah.ContainingPackage.ClassList.Name}.'}
die gibt:
{'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' }
Einige Klassen in beiden Paketen zu sein scheinen. Ich denke, die zweite Liste ist die Kern-Klassen und die erste Liste einige spezielle Klassen für Liniendiagramme (nicht gepatcht). Aber das ist nur eine Vermutung.
Ich denke, wir sollten alle grundlegenden Grafikklassen haben, oder dass es andere Grafiken gibt, die in anderen Paketen sind - wenn jemand weiß, was diese anderen Pakete sind, lass es uns wissen!
BEARBEITEN Endlich habe ich die Seite der Dokumentation gefunden, die alle grafischen Objekte auflistet. Siehe here
Wirklich gute Möglichkeit zu finden! Sie können auch einige zusätzliche Informationen erhalten: "findall (gcf)" – hello123
es ist nicht speziell, was ich fragte, aber genauso nützlich, wenn nicht nützlicher, danke – user2305193