MATLAB Answers

0

What handle graphics objects have an empty 'Children' property in MATLAB R2014b?

In MATLAB R2014a, I could access the individual children of a legend using the following command:
get(legendHandle,'Children')
When I execute the same comamnd in MALTAB R2014b, I get an empty array. Why is this so? What other graphics objects exhibit similar behavior?

Products


Release

R2014b

3 Answers

Answer by MathWorks Support Team on 28 Aug 2014
 Accepted Answer

In R2014a and earlier, chart objects, legends, and colorbars contain handles to underlying objects in their Children properties. For example, a scatter series contains patch objects in its Children property. Changing property values of the patch object changes the appearance of the scatter series.
Starting in R2014b, these objects do not contain handles to underlying objects in their Children properties. To customize the graph, use properties of the actual object.
These are the affected objects:
  • Colorbar
  • Legend
  • Area
  • Bar series
  • Contour
  • Errorbar series
  • Scatter series
  • Stair
  • Stem series
  • Quiver series

  4 Comments

Show 1 older comment
Michael, those things are gone and there is no viable work-around. The representation is completely different now.
Mathworks has been adding additional properties to allow more of these items to be controlled; the flexibility of R2015b is improved relative to R2015a which in turn was more flexible than R2014b.
You know how to work the system. If FaceAlpha does not show up correctly in legends then open a technical support case on the topic.
Wow. So I've been having similar issues, can't find or change 'children' of the contour plot to change them or compute further.
What this comment means, is that my 14+ years of working with complex contouring is all gone? With no work-around? This is awful, IMHO.
In HG2, contour creates matlab.graphics.chart.primitive.Contour which is built-in (cannot see the generating code).
There is an EdgePrims property which is an array of class matlab.graphics.primitive.world.LineStrip which contain information about the individual contour lines that are drawn. These are not line() objects such as are used by plot. You can change their color and specular coefficients and color diffusion. There is a StripData property that looks like it might be indices into the VertexData property so possibly you can access the coordinates of the lines (but that was always possible by decoding the contour matrix.) You can set the LineStrip visible or not. But they are not objects that you can legend() -- the contour plot as a whole has a legend but not the lines on the contour.

Sign in to comment.


Answer by James Shanley on 20 Nov 2014

So how does one enlarge the size of the dots in the legend now? (in case the scatter has tiny dots but the legend needs to have larger ones in order to see the color)

  0 Comments

Sign in to comment.


Answer by Johannes Korsawe on 26 Jan 2015

And how to make filled contours semi-transparent? Contour object can either be filled or not, but there is no such thing as FaceAlpha.

  0 Comments

Sign in to comment.