Currently, decade labels are provided only if the current decade is a sufficiently large distance from the previous decade in the axis to avoid labels overlapping. A better method would be to provide decade labels only if a sufficiently large distance from the last labeled decade.
The structure of the algorithm is also currently a bit chaotic. It currently afterwards in the constructor function, but perhaps it should be a method or two in its own right.
Perhaps it would look better if zero were prioritised, with other labels placed on the axes with reference to this. If other labels are missed out, this can be because they are too close to zero, or the adjacent label nearest to zero. This would add a certain symmetry to the axes labelling.
Linear search is currently employed to find the nearest left bin edge to the value being searched. Binary search would be preferable, but I've suffered from bugs due to MATLAB indexing from 1 for vectors.