Spooky Graphed Data?
Show older comments
Data tip doesn't match Yaxis or actual data. Actual data is 1073741824.
Can anyone explain this?

Answers (2)
dpb
on 31 Oct 2025
0 votes
Longstanding behavior -- the datatip values are rounded to some (as far as I know an unspecified) number of significant digits; probably for cleanliness of display considerations.
Fangjun Jiang
on 31 Oct 2025
Edited: Fangjun Jiang
on 31 Oct 2025
a=plot(1073741820:1073741829);
datatip(a);
c=a.DataTipTemplate;
c.DataTipRows(2).Format
c.DataTipRows(2).Format='%d';
5 Comments
dpb
on 31 Oct 2025
I don't know if one can change the template for the axis callback datatip, though???
a=plot(1073741820:1073741829);
%datatip(a);
c=a.DataTipTemplate
And Lo! and behold, the datatip is another of those undocumented and hidden line properties Mathworks doesn't tell us anything about other than the creation programmatically with the datatip function which neglects to mention or link to anything about the default interactive behavior.
Thanks, @Fangjun Jiang, your response made me go try it without creating one and discovered it lurks there all the time.
The default format is 'auto' which undoubtedly transforms into '%g' internally and so
format longg
1073741824
format shortg
1073741824
fprintf('%g\n',1073741824)
fprintf('%.6g\n',1073741824)
fprintf('%d\n',round(1073741824,-4))
So, in fact, it does appear that for some size of values, 'auto' does resort to rounding to a given number of significant digits. Why would seem uncertain.
dpb
on 1 Nov 2025
"... it does appear that for some size of values, 'auto' does resort to rounding ..."
Maybe an enhancement request could be to only round if non-integer value?
Of course, once one knows that one can actually change the interactive behavior, then it's controllable to set the format. I suppose one could also set this as one of the groot conditions either globally or for a given set of figures.
Fangjun Jiang
on 2 Nov 2025
Thank you @dpb for digging it up. I tried and saw the "auto" format and then searched for the other format. That is all I did.
The real contribution was yours to make me curious about whether the interactive callback used the same ptopertiy and then that led to the discovery it is an undocumented and hidden(*) property of every line object.
(*) The actual property .DataTipRows is hidden such that even <Yair Altman's near magical GETUNDOCUMENTED function> doesn't find it which; having never seen it before, had led me to the erroneeous conclusion long ago that it was implemented as an internal callback from the axes and the two weren't really connected at all. Certainly the documentation doesn't provide any hint.
>> HL=plot(rand(10,1); % generate line handle to poke at...
>> U=getundocumented(HL)
U =
struct with fields:
ALimInclude: on
ALimIncludeMode: 'auto'
ALimInclude_I: on
AlignVertexCentersMode: 'auto'
...
CLimInclude_I: on
ChildrenMode: 'auto'
Children_I: [0×0 GraphicsPlaceholder]
ClippingMode: 'auto'
Clipping_I: on
Color_I: [0 0.447 0.741]
Copyable: 1
CreateFcnMode: 'auto'
CreateFcn_I: ''
CreateFcn_IS: '???'
DataTipTemplate_IS: [0×0 GraphicsPlaceholder]
DatetimeTickFormat: ''
DefaultPropMap_Internal: [0×0 struct]
...
>>
reveals only an empty graphics object placeholder; no hint that the actual set of properties are extant and addressable if one does stumble onto the fact they do belong to the lines on the axes.
Categories
Find more on Environment and Settings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
