2017-09-09 1 views
3

ich nicht eine umfassende Grafikobjekttypen Liste finden könnte, die besonders nützlich sein könnte, ein ändern Objekte in Matlab Plots wie zu finden:umfassende Liste von Grafikobjekttypen Matlab

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

Um genauer zu sein: Ich Ich suche nach einer Liste möglicher Eingaben nach dem Argument 'Typ'.

Antwort

4

Ich bin nicht eine Art und Weise bewusst die umfassende Liste zu bekommen, aber Sie können die Liste der Arten für vorhandene Objekte erhalten:

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

Praktisch in denen ich denke, das ist genug, da wir nicht interessiert sind, nicht vorhandene Objekte.

+1

Wirklich gute Möglichkeit zu finden! Sie können auch einige zusätzliche Informationen erhalten: "findall (gcf)" – hello123

+0

es ist nicht speziell, was ich fragte, aber genauso nützlich, wenn nicht nützlicher, danke – user2305193

1

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

Verwandte Themen