Skip to content

Commit b13aaf3

Browse files
Merge pull request #223 from plotly/jptest_offline
fix issue with scatter in offline mode
2 parents b1b3317 + e6820af commit b13aaf3

File tree

2 files changed

+128
-92
lines changed

2 files changed

+128
-92
lines changed

Diff for: plotly/plotlyfig_aux/handlegraphics/updateScatter.m

+124-84
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,23 @@ function updateScatter(obj,scatterIndex)
6060
%-CHECK FOR MULTIPLE AXES-%
6161
[xsource, ysource] = findSourceAxis(obj,axIndex);
6262

63-
%-AXIS DATA-%
64-
eval(['xaxis = obj.layout.xaxis' num2str(xsource) ';']);
65-
eval(['yaxis = obj.layout.yaxis' num2str(ysource) ';']);
63+
if ~isfield(scatter_data,'ZData')
6664

67-
%-------------------------------------------------------------------------%
65+
%-AXIS DATA-%
66+
eval(['xaxis = obj.layout.xaxis' num2str(xsource) ';']);
67+
eval(['yaxis = obj.layout.yaxis' num2str(ysource) ';']);
6868

69-
%-scatter xaxis-%
70-
obj.data{scatterIndex}.xaxis = ['x' num2str(xsource)];
69+
%-------------------------------------------------------------------------%
7170

72-
%-------------------------------------------------------------------------%
71+
%-scatter xaxis-%
72+
obj.data{scatterIndex}.xaxis = ['x' num2str(xsource)];
73+
74+
%-------------------------------------------------------------------------%
7375

74-
%-scatter yaxis-%
75-
obj.data{scatterIndex}.yaxis = ['y' num2str(ysource)];
76+
%-scatter yaxis-%
77+
obj.data{scatterIndex}.yaxis = ['y' num2str(ysource)];
78+
79+
end
7680

7781
%-------------------------------------------------------------------------%
7882

@@ -96,83 +100,119 @@ function updateScatter(obj,scatterIndex)
96100

97101
%-------------------------------------------------------------------------%
98102

103+
%-scatter patch data-%
104+
for m = 1:length(scatter_data)
99105

100-
%---------------------------------------------------------------------%
101-
102-
%-scatter x-%
103-
obj.data{scatterIndex}.x = scatter_data.XData;
104-
105-
%---------------------------------------------------------------------%
106-
107-
%-scatter y-%
108-
obj.data{scatterIndex}.y = scatter_data.YData;
109-
110-
%---------------------------------------------------------------------%
111-
112-
%-scatter z-%
113-
if isHG2()
114-
if isfield(scatter_data,'ZData')
115-
obj.data{scatterIndex}.type = 'scatter3d';
116-
obj.data{scatterIndex}.z = scatter_data.ZData;
106+
%reverse counter
107+
n = length(scatter_data) - m + 1;
108+
109+
%---------------------------------------------------------------------%
110+
111+
%-scatter x-%
112+
if length(scatter_data) > 1
113+
obj.data{scatterIndex}.x(m) = scatter_data(n).XData;
114+
else
115+
obj.data{scatterIndex}.x = scatter_data.XData;
117116
end
118-
end
119-
120-
%---------------------------------------------------------------------%
121-
122-
%-scatter showlegend-%
123-
leg = get(scatter_data.Annotation);
124-
legInfo = get(leg.LegendInformation);
125-
126-
switch legInfo.IconDisplayStyle
127-
case 'on'
128-
showleg = true;
129-
case 'off'
130-
showleg = false;
131-
end
132-
133-
obj.data{scatterIndex}.showlegend = showleg;
134-
135-
%---------------------------------------------------------------------%
136-
137-
%-scatter marker-%
138-
childmarker = extractScatterMarker(scatter_data);
139-
140-
%---------------------------------------------------------------------%
141-
142-
%-line color-%
143-
obj.data{scatterIndex}.marker.line.color = childmarker.line.color;
144-
145-
%---------------------------------------------------------------------%
146-
147-
%-marker color-%
148-
obj.data{scatterIndex}.marker.color = childmarker.color;
149-
150-
%---------------------------------------------------------------------%
151-
152-
%-sizeref-%
153-
obj.data{scatterIndex}.marker.sizeref = childmarker.sizeref;
154-
155-
%---------------------------------------------------------------------%
156-
157-
%-sizemode-%
158-
obj.data{scatterIndex}.marker.sizemode = childmarker.sizemode;
159-
160-
%---------------------------------------------------------------------%
161-
162-
%-symbol-%
163-
obj.data{scatterIndex}.marker.symbol = childmarker.symbol;
164-
165-
%---------------------------------------------------------------------%
166-
167-
%-size-%
168-
obj.data{scatterIndex}.marker.size = childmarker.size*0.1;
169-
170-
%---------------------------------------------------------------------%
171-
172-
%-line width-%
173-
obj.data{scatterIndex}.marker.line.width = childmarker.line.width;
174-
175-
%---------------------------------------------------------------------%
176117

118+
%---------------------------------------------------------------------%
119+
120+
%-scatter y-%
121+
if length(scatter_data) > 1
122+
obj.data{scatterIndex}.y(m) = scatter_data(n).YData;
123+
else
124+
obj.data{scatterIndex}.y = scatter_data.YData;
125+
end
126+
127+
%---------------------------------------------------------------------%
128+
129+
%-scatter z-%
130+
if isHG2()
131+
if isfield(scatter_data,'ZData')
132+
if any(scatter_data.ZData)
133+
if length(scatter_data) > 1
134+
obj.data{scatterIndex}.z(m) = scatter_data(n).ZData;
135+
else
136+
obj.data{scatterIndex}.z = scatter_data.ZData;
137+
end
138+
% overwrite type
139+
obj.data{scatterIndex}.type = 'scatter3d';
140+
end
141+
end
142+
end
143+
144+
%---------------------------------------------------------------------%
145+
146+
%-scatter showlegend-%
147+
leg = get(scatter_data.Annotation);
148+
legInfo = get(leg.LegendInformation);
149+
150+
switch legInfo.IconDisplayStyle
151+
case 'on'
152+
showleg = true;
153+
case 'off'
154+
showleg = false;
155+
end
156+
157+
if ~isfield(scatter_data,'ZData')
158+
obj.data{scatterIndex}.showlegend = showleg;
159+
end
160+
161+
%---------------------------------------------------------------------%
162+
163+
%-scatter marker-%
164+
childmarker = extractScatterMarker(scatter_data(n));
165+
166+
%---------------------------------------------------------------------%
167+
168+
%-line color-%
169+
if length(scatter_data) > 1
170+
obj.data{scatterIndex}.marker.line.color{m} = childmarker.line.color{1};
171+
else
172+
obj.data{scatterIndex}.marker.line.color = childmarker.line.color;
173+
end
174+
175+
%---------------------------------------------------------------------%
176+
177+
%-marker color-%
178+
if length(scatter_data) > 1
179+
obj.data{scatterIndex}.marker.color{m} = childmarker.color{1};
180+
else
181+
obj.data{scatterIndex}.marker.color = childmarker.color;
182+
end
183+
184+
%---------------------------------------------------------------------%
185+
186+
%-sizeref-%
187+
obj.data{scatterIndex}.marker.sizeref = childmarker.sizeref;
188+
189+
%---------------------------------------------------------------------%
190+
191+
%-sizemode-%
192+
obj.data{scatterIndex}.marker.sizemode = childmarker.sizemode;
193+
194+
%---------------------------------------------------------------------%
195+
196+
%-symbol-%
197+
obj.data{scatterIndex}.marker.symbol{m} = childmarker.symbol;
198+
199+
%---------------------------------------------------------------------%
200+
201+
%-size-%
202+
obj.data{scatterIndex}.marker.size = childmarker.size;
203+
204+
%---------------------------------------------------------------------%
205+
206+
%-line width-%
207+
208+
if length(scatter_data) > 1 || ischar(childmarker.line.color)
209+
obj.data{scatterIndex}.marker.line.width(m) = childmarker.line.width;
210+
else
211+
obj.data{scatterIndex}.marker.line.width(1:length(childmarker.line.color)) = childmarker.line.width;
212+
end
213+
214+
%---------------------------------------------------------------------%
215+
216+
end
177217
end
178218

Diff for: plotly/plotlyfig_aux/helpers/extractScatterMarker.m

+4-8
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
col = 255*MarkerColor;
9494
markercolor = ['rgb(' num2str(col(1)) ',' num2str(col(2)) ',' num2str(col(3)) ')'];
9595
else
96+
9697
switch MarkerColor
9798

9899
case 'none'
@@ -111,17 +112,16 @@
111112

112113

113114
case 'flat'
114-
115+
115116
for n = 1:length(patch_data.CData)
116-
117-
capCD = max(min(patch_data.CData(1,n),axis_data.CLim(2)),axis_data.CLim(1));
117+
118+
capCD = max(min(patch_data.CData(n),axis_data.CLim(2)),axis_data.CLim(1));
118119
scalefactor = (capCD - axis_data.CLim(1))/diff(axis_data.CLim);
119120
col = 255*(colormap(1 + floor(scalefactor*(length(colormap)-1)),:));
120121

121122
markercolor{n} = ['rgb(' num2str(col(1)) ',' num2str(col(2)) ',' num2str(col(3)) ')'];
122123

123124
end
124-
markercolor = markercolor{1}
125125
end
126126
end
127127

@@ -176,8 +176,6 @@
176176
markerlinecolor{n} = ['rgb(' num2str(col(1)) ',' num2str(col(2)) ',' num2str(col(3)) ')'];
177177

178178
end
179-
180-
markerlinecolor = markerlinecolor{1}
181179

182180
end
183181
end
@@ -193,8 +191,6 @@
193191
markerlinecolor{n} = ['rgb(' num2str(col(1)) ',' num2str(col(2)) ',' num2str(col(3)) ')'];
194192

195193
end
196-
197-
markerlinecolor = markerlinecolor{1};
198194
end
199195
end
200196

0 commit comments

Comments
 (0)