While updating my book and trying to be as consistent as possible throughout the text and the MATLAB examples I find it quite surprising that the behaviour of graphics function is not consistent in MATLAB.
As an example, according to the docs
data_radians_1 = 4+randn(100,1); pax = polaraxes('ThetaZeroLocation','top',... 'ThetaDir','clockwise') polarhistogram(pax,data_radians_1)
should actually work but we have to add a “hold on” after polaraxes to keep the axes.
data_radians_1 = 4+randn(100,1); pax = polaraxes('ThetaZeroLocation','top',... 'ThetaDir','clockwise'), hold on polarhistogram(pax,data_radians_1)
The reason for that is that polarhistogram creates its own axes, therefore the above series of commands does not work – and the docs do not say that. It’s quite confusing for those getting started with MATLAB I think.
The reason for the inconsistent behaviour is that there are two types of graphics functions in MATLAB: the ones creating their own axes system and others that are actually not graphics functions but they are creating graphics primitives such as lines:
clear data = randn(100,1); ax = axes('XLim',[0 50]), hold on plot(ax,1:length(data),data,... 'Marker','o') figure clear data = randn(100,1); ax = axes('XLim',[0 50]) line(ax,1:length(data),data,... 'Marker','o')
I more and more try to use the root, figure, axis, line system instead of using high level graphics functions. On the other hand, writing the code for a polar histogram is quite time consuming, if you consider that this is only one of many examples in the book and I actually hate polar coordinates!