Scatter3 : How do I add 4th variable to Data Tips?
12 次查看(过去 30 天)
显示 更早的评论
I have this code going :
h=scatter3(Lab(2,:),Lab(3,:),Lab(1,:),80,RGB,'fill');
xlabel('b*'),ylabel('a*'),zlabel('L*');
title('CIE-L*a*b* coordinates');
axis([min_Lab(3) max_Lab(3) min_Lab(2) max_Lab(2) min_Lab(1) max_Lab(1)]);grid on;hold on;
% draw black lines indicating axis
line([min_Lab(3) max_Lab(3)],[0 0],[0 0],'color',[0 0 0],'lineWidth',linewidth); % Axis L* == a* == 0
line([0 0],[min_Lab(2) max_Lab(2)],[0 0],'color',[0 0 0],'lineWidth',linewidth); % Axis L* == b* == 0
line([0 0],[0 0],[min_Lab(1) max_Lab(1)],'color',[0 0 0],'lineWidth',linewidth); % Axis a* == b* == 0
% Redefine labels
h.DataTipTemplate.DataTipRows(1).Label = 'b';
h.DataTipTemplate.DataTipRows(2).Label = 'a=';
h.DataTipTemplate.DataTipRows(3).Label = 'L=';
h.DataTipTemplate.DataTipRows(3).Label = 'DE76='; <------ 4th Variable here!
% Show datatip
datatip(h, h.XData(1),h.YData(1),h.ZData(1));
I would like to add a fourth variable to the Data Tip as shown below :
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/841675/image.jpeg)
Now, somehow (?), I need to pass the DE76 variable as argument to the datatip() function?
The problem, as I see it, is that datatip seem to only take its arguments from the figure handle, h :
datatip(h, h.XData(1),h.YData(1),h.ZData(1));
How could I possibly access my DeltaE variable, which is sitting in a different array :
DE76 =
0.2309 6.5948 6.3132
20.8147 15.0842 2.2396
0.7225 41.3219 55.9979
1.2122 0.9848 4.2285
I was thinking of, perhaps, adding a fourth row to the LabEpson array which would only contains Lab values otherwise. But they wouldn't be part of the "figure" h structure? This is where I'm lost...
I'll try to find the answer on my own...
0 个评论
回答(1 个)
Cris LaPierre
2021-12-22
7 个评论
Cris LaPierre
2021-12-22
I don't understand the specifics of the data in your plot, but data tips correspond to actual datapoints in the axes. They should not appear where there is no data. Since DE76 must be the same length as the data on X, Y, and Z, you should always have data for all 4 rows of the data tip.
Your code has changed the datatip template, so that, in this figure, it will always have 4 rows. If there is an (X,Y,Z) datapoint that should not have a DE76 value, you could make that element's value in DE76 be NaN.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!