11function data = updateScatter(obj ,plotIndex )
2- % -INITIALIZATIONS-%
32 axIndex = obj .getAxisIndex(obj .State .Plot(plotIndex ).AssociatedAxis);
43 [xSource , ySource ] = findSourceAxis(obj ,axIndex );
54 plotData = obj .State .Plot(plotIndex ).Handle;
65
7- % -check is 3D scatter-%
8- isScatter3D = isprop(plotData ," ZData" ) && ~isempty(plotData .ZData );
6+ data.mode = " markers" ;
7+ data.visible = plotData .Visible == " on" ;
8+ data.name = plotData .DisplayName ;
9+ data.marker = extractScatterMarker(plotData );
10+ [data .x , data .y ] = getTraceData2D(plotData );
911
10- % -set trace-%
12+ isScatter3D = isprop( plotData , " ZData " ) && ~isempty( plotData . ZData );
1113 if ~isScatter3D
1214 data.type = " scatter" ;
1315 data.xaxis = " x" + xSource ;
1618 else
1719 data.type = " scatter3d" ;
1820 data.scene = " scene" + xSource ;
19-
2021 updateScene(obj , plotIndex );
21- end
22-
23- data.mode = " markers" ;
24- data.visible = strcmp(plotData .Visible , " on" );
25- data.name = plotData .DisplayName ;
26-
27- % -set trace data-%
28- [xData , yData ] = getTraceData2D(plotData );
29- data.x = xData ;
30- data.y = yData ;
31-
32- if isScatter3D
3322 data.z = plotData .ZData ;
23+ data.marker.size = 2 * data .marker .size ;
3424 end
3525
36- % -set trace marker-%
37- data.marker = extractScatterMarker( plotData );
38-
39- if isScatter3D
40- markerSize = data .marker . size ;
41- data.marker.size = 2 * markerSize ;
26+ dataTipRows = plotData . DataTipTemplate . DataTipRows ;
27+ dataTipRows = dataTipRows(~ismember({ dataTipRows . Label },[ " Size " " Color " " X " " Y " " Z " ]) );
28+ if numel( dataTipRows ) > 0
29+ customLabel = join(string({ dataTipRows . Label }) + " : " + string({ dataTipRows . Value }), " <br> " );
30+ data.hovertext = " X: " + data .x + " <br> " + " Y: " + data . y + " <br> " + customLabel ;
31+ data.hoverinfo = " text " ;
4232 end
4333
44- % -set trace legend-%
4534 data.showlegend = getShowLegend(plotData );
4635end
4736
4837function updateScene(obj , dataIndex )
49- % -INITIALIZATIONS-%
5038 axIndex = obj .getAxisIndex(obj .State .Plot(dataIndex ).AssociatedAxis);
5139 plotData = obj .State .Plot(dataIndex ).Handle;
5240 axisData = plotData .Parent ;
@@ -114,7 +102,6 @@ function updateScene(obj, dataIndex)
114102 if isduration(xTick ) || isdatetime(xTick )
115103 xTickChar = char(xTick );
116104 xTickLabel = axisData .XTickLabel ;
117-
118105 for n = 1 : length(xTickLabel )
119106 for m = 1 : size(xTickChar , 1 )
120107 if ~isempty(strfind(string(xTickChar(m , : )), xTickLabel{n }))
@@ -129,7 +116,6 @@ function updateScene(obj, dataIndex)
129116 if isduration(yTick ) || isdatetime(yTick )
130117 yTickChar = char(yTick );
131118 yTickLabel = axisData .YTickLabel ;
132-
133119 for n = 1 : length(yTickLabel )
134120 for m = 1 : size(yTickChar , 1 )
135121 if ~isempty(strfind(string(yTickChar(m , : )), yTickLabel{n }))
@@ -259,10 +245,8 @@ function updateCategoricalAxis(obj, plotIndex)
259245
260246function jitWeight = getJitWeight(jitData , refData )
261247 jitUnique = sort(unique(jitData ), " ascend" );
262-
263248 for n = 1 : length(jitUnique )
264249 jitInd = find(jitData == jitUnique(n ));
265-
266250 if length(jitInd ) > 1
267251 refDataN = refData(jitInd );
268252 stdData(n ) = std(refDataN(~isnan(refDataN )));
@@ -278,7 +262,6 @@ function updateCategoricalAxis(obj, plotIndex)
278262 refPoints = linspace(min(refData ), max(refData ), 2 * length(refData ));
279263 [densityData , refPoints ] = ksdensity(refData , refPoints );
280264 densityData = jitWeight * rescale(densityData , 0 , 1 );
281-
282265 for n = 1 : length(refData )
283266 [~ , refInd ] = min(abs(refPoints - refData(n )));
284267 jitData(n ) = jitData(n ) * densityData(refInd );
0 commit comments