1
1
function updatePie3(obj ,plotIndex )
2
2
3
- % -update according to patch or surface-%
4
- if strcmpi(obj .State .Plot(plotIndex ).Class, ' patch' )
5
- updatePatchPie3(obj , plotIndex );
6
- else
7
- updateSurfacePie3(obj , plotIndex );
8
- end
9
-
10
- % -hide axis-x-%
11
- obj.PlotOptions.scene.xaxis.title = ' ' ;
12
- obj.PlotOptions.scene.xaxis.autotick = false ;
13
- obj.PlotOptions.scene.xaxis.zeroline = false ;
14
- obj.PlotOptions.scene.xaxis.showline = false ;
15
- obj.PlotOptions.scene.xaxis.showticklabels = false ;
16
- obj.PlotOptions.scene.xaxis.showgrid = false ;
17
-
18
- % -hide axis-y-%
19
- obj.PlotOptions.scene.yaxis.title = ' ' ;
20
- obj.PlotOptions.scene.yaxis.autotick = false ;
21
- obj.PlotOptions.scene.yaxis.zeroline = false ;
22
- obj.PlotOptions.scene.yaxis.showline = false ;
23
- obj.PlotOptions.scene.yaxis.showticklabels = false ;
24
- obj.PlotOptions.scene.yaxis.showgrid = false ;
25
-
26
- % -hide axis-z-%
27
- obj.PlotOptions.scene.zaxis.title = ' ' ;
28
- obj.PlotOptions.scene.zaxis.autotick = false ;
29
- obj.PlotOptions.scene.zaxis.zeroline = false ;
30
- obj.PlotOptions.scene.zaxis.showline = false ;
31
- obj.PlotOptions.scene.zaxis.showticklabels = false ;
32
- obj.PlotOptions.scene.zaxis.showgrid = false ;
33
-
34
- % -put text-%
35
- obj.data{plotIndex }.hoverinfo = ' text' ;
36
- obj.data{plotIndex }.hovertext = obj .PlotOptions .perc ;
3
+ % -update according to patch or surface-%
4
+ if strcmpi(obj .State .Plot(plotIndex ).Class, ' patch' )
5
+ updatePatchPie3(obj , plotIndex );
6
+ else
7
+ updateSurfacePie3(obj , plotIndex );
8
+ end
37
9
38
- obj.layout = setfield(obj .layout ,[' scene' obj .PlotOptions .scene_anchor(end )], obj .PlotOptions .scene );
39
- obj.data{plotIndex }.scene = obj .PlotOptions .scene_anchor ;
10
+ % -hide axis-x-%
11
+ obj.PlotOptions.scene.xaxis.title = ' ' ;
12
+ obj.PlotOptions.scene.xaxis.autotick = false ;
13
+ obj.PlotOptions.scene.xaxis.zeroline = false ;
14
+ obj.PlotOptions.scene.xaxis.showline = false ;
15
+ obj.PlotOptions.scene.xaxis.showticklabels = false ;
16
+ obj.PlotOptions.scene.xaxis.showgrid = false ;
17
+
18
+ % -hide axis-y-%
19
+ obj.PlotOptions.scene.yaxis.title = ' ' ;
20
+ obj.PlotOptions.scene.yaxis.autotick = false ;
21
+ obj.PlotOptions.scene.yaxis.zeroline = false ;
22
+ obj.PlotOptions.scene.yaxis.showline = false ;
23
+ obj.PlotOptions.scene.yaxis.showticklabels = false ;
24
+ obj.PlotOptions.scene.yaxis.showgrid = false ;
25
+
26
+ % -hide axis-z-%
27
+ obj.PlotOptions.scene.zaxis.title = ' ' ;
28
+ obj.PlotOptions.scene.zaxis.autotick = false ;
29
+ obj.PlotOptions.scene.zaxis.zeroline = false ;
30
+ obj.PlotOptions.scene.zaxis.showline = false ;
31
+ obj.PlotOptions.scene.zaxis.showticklabels = false ;
32
+ obj.PlotOptions.scene.zaxis.showgrid = false ;
33
+
34
+ % -put text-%
35
+ obj.data{plotIndex }.hoverinfo = ' text' ;
36
+ obj.data{plotIndex }.hovertext = obj .PlotOptions .perc ;
37
+
38
+ % -update scene-%
39
+ obj.layout = setfield(obj .layout ,[' scene' obj .PlotOptions .scene_anchor(end )], obj .PlotOptions .scene );
40
+ obj.data{plotIndex }.scene = obj .PlotOptions .scene_anchor ;
41
+ obj.data{plotIndex }.legendgroup = obj .PlotOptions .scene_anchor ;
42
+
43
+ % -update legend-%
44
+ obj.layout.legend.tracegroupgap = 20 ;
45
+ obj.layout.legend.traceorder = ' grouped' ;
46
+ obj.layout.legend.bordercolor = ' rgb(200,200,200)' ;
47
+ obj.layout.legend.x = 0.8 ;
48
+ obj.layout.legend.y = 0.5 ;
49
+ obj.layout.legend.borderwidth = 0.5 ;
40
50
41
51
end
42
52
@@ -53,15 +63,15 @@ function updatePie3(obj,plotIndex)
53
63
54
64
% -get the percentage-%
55
65
if ~any(nonzeros(patch_data .ZData ))
56
- t1 = atan2(patch_data .YData(2 ), patch_data .XData(2 ));
57
- t2 = atan2(patch_data .YData(end - 1 ), patch_data .XData(end - 1 ));
58
-
59
- a = rad2deg(t2 - t1 );
60
- if a < 0
61
- a = a + 360 ;
62
- end
63
-
64
- obj.PlotOptions.perc = sprintf(' %d %% ' , round(100 * a / 360 ));
66
+ t1 = atan2(patch_data .YData(2 ), patch_data .XData(2 ));
67
+ t2 = atan2(patch_data .YData(end - 1 ), patch_data .XData(end - 1 ));
68
+
69
+ a = rad2deg(t2 - t1 );
70
+ if a < 0
71
+ a = a + 360 ;
72
+ end
73
+
74
+ obj.PlotOptions.perc = sprintf(' %d %% ' , round(100 * a / 360 ));
65
75
end
66
76
67
77
% -CHECK FOR MULTIPLE AXES-%
@@ -86,29 +96,29 @@ function updatePie3(obj,plotIndex)
86
96
% -patch x-%
87
97
xdata = patch_data .XData ;
88
98
if isvector(xdata )
89
- obj.data{patchIndex }.x = [xdata ' xdata(1 )];
99
+ obj.data{patchIndex }.x = [xdata ' xdata(1 )];
90
100
else
91
- xtemp = reshape(xdata ,[],1 );
92
- xnew = [];
93
- for n = 1 : size(xdata ,2 )
94
- xnew = [xnew ; xdata(: ,n ) ; xdata(1 ,n ); NaN ];
95
- end
96
- obj.data{patchIndex }.x = xnew ;
101
+ xtemp = reshape(xdata ,[],1 );
102
+ xnew = [];
103
+ for n = 1 : size(xdata ,2 )
104
+ xnew = [xnew ; xdata(: ,n ) ; xdata(1 ,n ); NaN ];
105
+ end
106
+ obj.data{patchIndex }.x = xnew ;
97
107
end
98
108
99
109
% ---------------------------------------------------------------------%
100
110
101
111
% -patch y-%
102
112
ydata = patch_data .YData ;
103
113
if isvector(ydata )
104
- obj.data{patchIndex }.y = [ydata ' ydata(1 )];
114
+ obj.data{patchIndex }.y = [ydata ' ydata(1 )];
105
115
else
106
- ytemp = reshape(ydata ,[],1 );
107
- ynew = [];
108
- for n = 1 : size(ydata ,2 )
109
- ynew = [ynew ; ydata(: ,n ) ; ydata(1 ,n ); NaN ];
110
- end
111
- obj.data{patchIndex }.y = ynew ;
116
+ ytemp = reshape(ydata ,[],1 );
117
+ ynew = [];
118
+ for n = 1 : size(ydata ,2 )
119
+ ynew = [ynew ; ydata(: ,n ) ; ydata(1 ,n ); NaN ];
120
+ end
121
+ obj.data{patchIndex }.y = ynew ;
112
122
end
113
123
114
124
% ---------------------------------------------------------------------%
@@ -117,23 +127,23 @@ function updatePie3(obj,plotIndex)
117
127
zdata = patch_data .ZData ;
118
128
119
129
if isvector(ydata )
120
- obj.data{patchIndex }.z = [zdata ' zdata(1 )];
130
+ obj.data{patchIndex }.z = [zdata ' zdata(1 )];
121
131
else
122
- ztemp = reshape(zdata ,[],1 );
123
- znew = [];
124
- for n = 1 : size(zdata ,2 )
125
- znew = [znew ; zdata(: ,n ) ; zdata(1 ,n ); NaN ];
126
- end
127
- obj.data{patchIndex }.z = znew ;
132
+ ztemp = reshape(zdata ,[],1 );
133
+ znew = [];
134
+ for n = 1 : size(zdata ,2 )
135
+ znew = [znew ; zdata(: ,n ) ; zdata(1 ,n ); NaN ];
136
+ end
137
+ obj.data{patchIndex }.z = znew ;
128
138
end
129
139
130
140
% ---------------------------------------------------------------------%
131
141
132
142
% -patch name-%
133
143
if ~isempty(patch_data .DisplayName )
134
- obj.data{patchIndex }.name = patch_data .DisplayName ;
144
+ obj.data{patchIndex }.name = patch_data .DisplayName ;
135
145
else
136
- obj.data{patchIndex }.name = patch_data .DisplayName ;
146
+ obj.data{patchIndex }.name = patch_data .DisplayName ;
137
147
end
138
148
139
149
% ---------------------------------------------------------------------%
@@ -144,17 +154,17 @@ function updatePie3(obj,plotIndex)
144
154
% ---------------------------------------------------------------------%
145
155
146
156
% -patch fill-%
147
- % obj.data{patchIndex}.fill = 'tozeroy';
157
+ % obj.data{patchIndex}.fill = 'tozeroy';
148
158
149
159
% -PATCH MODE-%
150
160
if ~strcmpi(' none' , patch_data .Marker ) && ~strcmpi(' none' , patch_data .LineStyle )
151
- mode = ' lines+markers' ;
161
+ mode = ' lines+markers' ;
152
162
elseif ~strcmpi(' none' , patch_data .Marker )
153
- mode = ' markers' ;
163
+ mode = ' markers' ;
154
164
elseif ~strcmpi(' none' , patch_data .LineStyle )
155
- mode = ' lines' ;
165
+ mode = ' lines' ;
156
166
else
157
- mode = ' none' ;
167
+ mode = ' none' ;
158
168
end
159
169
160
170
obj.data{patchIndex }.mode = mode ;
@@ -173,21 +183,19 @@ function updatePie3(obj,plotIndex)
173
183
174
184
% -patch fillcolor-%
175
185
fill = extractPatchFace(patch_data );
186
+ obj.data{patchIndex }.surfacecolor = fill .color ;
176
187
177
- if strcmp(obj.data{patchIndex }.type,' scatter' )
178
- obj.data{patchIndex }.fillcolor = fill .color ;
179
- else
180
- obj.data{patchIndex }.surfacecolor = fill .color ;
188
+ if zdata(1 ) == 0
189
+ obj.data{patchIndex }.line.width = 3 ;
190
+ obj.data{patchIndex }.line.color = fill .color ;
181
191
end
182
192
183
193
% ---------------------------------------------------------------------%
184
194
185
195
% -surfaceaxis-%
186
- if strcmp(obj.data{patchIndex }.type,' scatter3d' )
187
- minstd = min([std(patch_data .XData ) std(patch_data .YData ) std(patch_data .ZData )]);
188
- ind = find([std(patch_data .XData ) std(patch_data .YData ) std(patch_data .ZData )] == minstd )-1 ;
189
- obj.data{patchIndex }.surfaceaxis = ind ;
190
- end
196
+ minstd = min([std(patch_data .XData ) std(patch_data .YData ) std(patch_data .ZData )]);
197
+ ind = find([std(patch_data .XData ) std(patch_data .YData ) std(patch_data .ZData )] == minstd )-1 ;
198
+ obj.data{patchIndex }.surfaceaxis = ind ;
191
199
192
200
% -------------------------------------------------------------------------%
193
201
@@ -196,10 +204,10 @@ function updatePie3(obj,plotIndex)
196
204
legInfo = get(leg .LegendInformation );
197
205
198
206
switch legInfo .IconDisplayStyle
199
- case ' on'
200
- showleg = true ;
201
- case ' off'
202
- showleg = false ;
207
+ case ' on'
208
+ showleg = true ;
209
+ case ' off'
210
+ showleg = false ;
203
211
end
204
212
205
213
obj.data{patchIndex }.showlegend = showleg ;
@@ -253,8 +261,8 @@ function updatePie3(obj,plotIndex)
253
261
len = length(cmap )-1 ;
254
262
255
263
for c = 1 : length(cmap )
256
- col = 255 * cmap(c , : );
257
- obj.data{surfaceIndex }.colorscale{c } = { (c - 1 )/len , [' rgb(' num2str(col(1 )) ' ,' num2str(col(2 )) ' ,' num2str(col(3 )) ' )' ] };
264
+ col = 255 * cmap(c , : );
265
+ obj.data{surfaceIndex }.colorscale{c } = { (c - 1 )/len , [' rgb(' num2str(col(1 )) ' ,' num2str(col(2 )) ' ,' num2str(col(3 )) ' )' ] };
258
266
end
259
267
260
268
obj.data{surfaceIndex }.surfacecolor = 255 *(image_data .CData - 1 ) / (obj.PlotOptions.nbars{xsource } - 1 );
@@ -271,19 +279,19 @@ function updatePie3(obj,plotIndex)
271
279
ar = obj .PlotOptions .AspectRatio ;
272
280
273
281
if ~isempty(ar )
274
- if ischar(ar )
275
- scene.aspectmode = ar ;
276
- elseif isvector(ar ) && length(ar ) == 3
277
- xar = ar(1 );
278
- yar = ar(2 );
279
- zar = ar(3 );
280
- end
282
+ if ischar(ar )
283
+ scene.aspectmode = ar ;
284
+ elseif isvector(ar ) && length(ar ) == 3
285
+ xar = ar(1 );
286
+ yar = ar(2 );
287
+ zar = ar(3 );
288
+ end
281
289
else
282
290
283
- % -define as default-%
284
- xar = max(xdata(: ));
285
- yar = max(ydata(: ));
286
- zar = max([xar , yar ]);
291
+ % -define as default-%
292
+ xar = max(xdata(: ));
293
+ yar = max(ydata(: ));
294
+ zar = max([xar , yar ]);
287
295
end
288
296
289
297
fac1 = 0.75 ;
@@ -305,21 +313,21 @@ function updatePie3(obj,plotIndex)
305
313
ey = obj .PlotOptions .CameraEye ;
306
314
307
315
if ~isempty(ey )
308
- if isvector(ey ) && length(ey ) == 3
309
- scene.camera.eye.x = ey(1 );
310
- scene.camera.eye.y = ey(2 );
311
- scene.camera.eye.z = ey(3 );
312
- end
316
+ if isvector(ey ) && length(ey ) == 3
317
+ scene.camera.eye.x = ey(1 );
318
+ scene.camera.eye.y = ey(2 );
319
+ scene.camera.eye.z = ey(3 );
320
+ end
313
321
else
314
322
315
- % -define as default-%
316
- xey = - xar ; if xey > 0 xfac = - 0.2 ; else xfac = 0.2 ; end
317
- yey = - yar ; if yey > 0 yfac = - 0.2 ; else yfac = 0.2 ; end
318
- if zar > 0 zfac = 0.2 ; else zfac = - 0.2 ; end
319
-
320
- scene.camera.eye.x = xey + xfac * xey ;
321
- scene.camera.eye.y = yey + yfac * yey ;
322
- scene.camera.eye.z = zar + zfac * zar ;
323
+ % -define as default-%
324
+ xey = - xar ; if xey > 0 xfac = - 0.2 ; else xfac = 0.2 ; end
325
+ yey = - yar ; if yey > 0 yfac = - 0.2 ; else yfac = 0.2 ; end
326
+ if zar > 0 zfac = 0.2 ; else zfac = - 0.2 ; end
327
+
328
+ scene.camera.eye.x = xey + xfac * xey ;
329
+ scene.camera.eye.y = yey + yfac * yey ;
330
+ scene.camera.eye.z = zar + zfac * zar ;
323
331
end
324
332
325
333
% -------------------------------------------------------------------------%
@@ -331,6 +339,7 @@ function updatePie3(obj,plotIndex)
331
339
332
340
% -surface name-%
333
341
obj.data{surfaceIndex }.name = image_data .DisplayName ;
342
+ obj.data{surfaceIndex - 1 }.name = image_data .DisplayName ;
334
343
335
344
% -------------------------------------------------------------------------%
336
345
@@ -348,13 +357,14 @@ function updatePie3(obj,plotIndex)
348
357
legInfo = get(leg .LegendInformation );
349
358
350
359
switch legInfo .IconDisplayStyle
351
- case ' on'
352
- showleg = true ;
353
- case ' off'
354
- showleg = false ;
360
+ case ' on'
361
+ showleg = true ;
362
+ case ' off'
363
+ showleg = false ;
355
364
end
356
365
357
- obj.data{surfaceIndex }.showlegend = showleg ;
366
+ obj.data{surfaceIndex - 1 }.showlegend = showleg ;
367
+ obj.data{surfaceIndex }.showlegend = false ;
358
368
359
369
% -------------------------------------------------------------------------%
360
370
end
0 commit comments