diff --git a/plotly/plotlyfig.m b/plotly/plotlyfig.m index 6797bb4b..6859dffe 100644 --- a/plotly/plotlyfig.m +++ b/plotly/plotlyfig.m @@ -642,7 +642,7 @@ function validate(obj) updateAxis(obj,n); catch % TODO to the future - disp('warning: error in updateAxis') + disp('catch at line 643 in plotlyfog.m file') end end @@ -657,7 +657,7 @@ function validate(obj) end catch % TODO to the future - disp('warning: error using update_opac') + disp('catch at line 660 in plotlyfog.m file') end end @@ -668,7 +668,7 @@ function validate(obj) updateAnnotation(obj,n); catch % TODO to the future - disp('warning: error in updateAnnotation') + disp('catch at line 671 in plotlyfog.m file') end end @@ -972,7 +972,7 @@ function delete(obj) strcmpi(fieldname,'surface') || strcmpi(fieldname,'scatter3d') ... || strcmpi(fieldname,'mesh3d') || strcmpi(fieldname,'bar') ... || strcmpi(fieldname,'scatterpolar') || strcmpi(fieldname,'barpolar') ... - || strcmpi(fieldname,'scene') ... + || strcmpi(fieldname,'scene') || strcmpi(fieldname,'layout') ... ) fprintf(['\nWhoops! ' exception.message(1:end-1) ' in ' fieldname '\n\n']); end diff --git a/plotly/plotlyfig_aux/core/updateData.m b/plotly/plotlyfig_aux/core/updateData.m index d8331ebd..1c6fafe9 100644 --- a/plotly/plotlyfig_aux/core/updateData.m +++ b/plotly/plotlyfig_aux/core/updateData.m @@ -9,6 +9,10 @@ if ~strcmpi(obj.PlotOptions.TreatAs, '_') if strcmpi(obj.PlotOptions.TreatAs, 'pie3') updatePie3(obj, dataIndex); + elseif strcmpi(obj.PlotOptions.TreatAs, 'pcolor') + updatePColor(obj, dataIndex); + elseif strcmpi(obj.PlotOptions.TreatAs, 'polarplot') + updatePolarplot(obj, dataIndex); end %-update plot based on plot call class-% @@ -148,7 +152,7 @@ end catch % TODO to the future - disp('waring: error in updateData at AXIS/DATA CLEAN UP section') + disp('catch at line 155 in updateData.m file') end %-------------------------------------------------------------------------% diff --git a/plotly/plotlyfig_aux/handlegraphics/updatePColor.m b/plotly/plotlyfig_aux/handlegraphics/updatePColor.m new file mode 100644 index 00000000..359a6ab0 --- /dev/null +++ b/plotly/plotlyfig_aux/handlegraphics/updatePColor.m @@ -0,0 +1,178 @@ +function obj = updatePColor(obj, patchIndex) + +%-AXIS INDEX-% +axIndex = obj.getAxisIndex(obj.State.Plot(patchIndex).AssociatedAxis); + +%-PCOLOR DATA STRUCTURE- % +pcolor_data = get(obj.State.Plot(patchIndex).Handle); +figure_data = get(obj.State.Figure.Handle); + +%-CHECK FOR MULTIPLE AXES-% +[xsource, ysource] = findSourceAxis(obj,axIndex); + +%-AXIS DATA-% +eval(['xaxis = obj.layout.xaxis' num2str(xsource) ';']); +eval(['yaxis = obj.layout.yaxis' num2str(ysource) ';']); + +%-------------------------------------------------------------------------% + +%-pcolor xaxis-% +obj.data{patchIndex}.xaxis = ['x' num2str(xsource)]; + +%-------------------------------------------------------------------------% + +%-pcolor yaxis-% +obj.data{patchIndex}.yaxis = ['y' num2str(ysource)]; + +%-------------------------------------------------------------------------% + +%-plot type: surface-% +obj.data{patchIndex}.type = 'surface'; + +%-------------------------------------------------------------------------% + +%-format data-% +XData = pcolor_data.XData; +YData = pcolor_data.YData; +ZData = pcolor_data.ZData; +CData = pcolor_data.CData; +usegrid = false; + +if isvector(XData) + usegrid = true; + [XData, YData] = meshgrid(XData, YData); +end + +sizes = [(size(XData, 1)-1)*2, (size(XData, 2)-1)*2]; +xdata = zeros(sizes); +ydata = zeros(sizes); +zdata = zeros(sizes); +cdata = zeros(sizes); + +for n = 1:size(XData, 2)-1 + for m = 1:size(XData, 1)-1 + + % get indices + n1 = 2*(n-1)+1; m1 = 2*(m-1)+1; + + % get surface mesh + xdata(m1:m1+1,n1:n1+1) = XData(m:m+1, n:n+1); + ydata(m1:m1+1,n1:n1+1) = YData(m:m+1, n:n+1); + zdata(m1:m1+1,n1:n1+1) = ZData(m:m+1, n:n+1); + cdata(m1:m1+1,n1:n1+1) = ones(2,2)*CData(m, n); + end +end + +%-------------------------------------------------------------------------% + +%-x-data-% +obj.data{patchIndex}.x = xdata; + +%-------------------------------------------------------------------------% + +%-y-data-% +obj.data{patchIndex}.y = ydata; + +%-------------------------------------------------------------------------% + +%-z-data-% +obj.data{patchIndex}.z = zdata; + +%-------------------------------------------------------------------------% + +%-coloring-% +cmap = figure_data.Colormap; +len = length(cmap)-1; + +for c = 1: length(cmap) + col = 255 * cmap(c, :); + obj.data{patchIndex}.colorscale{c} = { (c-1)/len , ['rgb(' num2str(col(1)) ',' num2str(col(2)) ',' num2str(col(3)) ')' ] }; +end + +obj.data{patchIndex}.surfacecolor = cdata; +obj.data{patchIndex}.showscale = false; +obj.data{patchIndex}.cmin = min(CData(:)); +obj.data{patchIndex}.cmax = max(CData(:)); + +%-------------------------------------------------------------------------% + +%-setting grid mesh-% +if usegrid + % x-direction + xmin = min(XData(:)); + xmax = max(XData(:)); + xsize = (xmax - xmin) / (size(XData, 2) - 1); + obj.data{patchIndex}.contours.x.start = xmin; + obj.data{patchIndex}.contours.x.end = xmax; + obj.data{patchIndex}.contours.x.size = xsize; + obj.data{patchIndex}.contours.x.show = true; + obj.data{patchIndex}.contours.x.color = 'black'; + % y-direction + ymin = min(YData(:)); + ymax = max(YData(:)); + ysize = (ymax - ymin) / (size(YData, 2)-1); + obj.data{patchIndex}.contours.y.start = ymin; + obj.data{patchIndex}.contours.y.end = ymax; + obj.data{patchIndex}.contours.y.size = ysize; + obj.data{patchIndex}.contours.y.show = true; + obj.data{patchIndex}.contours.y.color = 'black'; +end + +%-------------------------------------------------------------------------% + +%-aspectratio-% +obj.layout.scene.aspectratio.x = 12; +obj.layout.scene.aspectratio.y = 10; +obj.layout.scene.aspectratio.z = 0.0001; + +%-------------------------------------------------------------------------% + +%-camera.eye-% +obj.layout.scene.camera.eye.x = 0; +obj.layout.scene.camera.eye.y = -0.5; +obj.layout.scene.camera.eye.z = 14; + +%-------------------------------------------------------------------------% + +%-hide axis-x-% +obj.layout.scene.xaxis.showticklabels = true; +obj.layout.scene.xaxis.zeroline = false; +obj.layout.scene.xaxis.showgrid = false; +obj.layout.scene.xaxis.title = ''; + +%-------------------------------------------------------------------------% + +%-hide axis-y-% +obj.layout.scene.yaxis.zeroline = false; +obj.layout.scene.yaxis.showgrid = false; +obj.layout.scene.yaxis.showticklabels = true; +obj.layout.scene.yaxis.title = ''; + +%-------------------------------------------------------------------------% + +%-hide axis-z-% +obj.layout.scene.zaxis.title = ''; +obj.layout.scene.zaxis.autotick = false; +obj.layout.scene.zaxis.zeroline = false; +obj.layout.scene.zaxis.showline = false; +obj.layout.scene.zaxis.showticklabels = false; +obj.layout.scene.zaxis.showgrid = false; + +%-------------------------------------------------------------------------% + +%-patch showlegend-% +leg = get(pcolor_data.Annotation); +legInfo = get(leg.LegendInformation); + +switch legInfo.IconDisplayStyle + case 'on' + showleg = true; + case 'off' + showleg = false; +end + +obj.data{patchIndex}.showlegend = showleg; + +%-------------------------------------------------------------------------% + +end diff --git a/plotly/plotlyfig_aux/handlegraphics/updatePolarplot.m b/plotly/plotlyfig_aux/handlegraphics/updatePolarplot.m new file mode 100644 index 00000000..4d3df342 --- /dev/null +++ b/plotly/plotlyfig_aux/handlegraphics/updatePolarplot.m @@ -0,0 +1,135 @@ +function updatePolarplot(obj,plotIndex) + +%-------------------------------------------------------------------------% + +%-Get plot class-% +plotclass = obj.State.Plot(plotIndex).Class; + +%-------------------------------------------------------------------------% + +%-run the correct plot class-% +if strcmpi(plotclass, 'line') + updatePolarline(obj,plotIndex) +elseif strcmpi(plotclass, 'polaraxes') + updatePolaraxes(obj,plotIndex) +end + +%-------------------------------------------------------------------------% + +end + + +%-------------------------------------------------------------------------% +%-HELPERS FUNCTIONS-% +%-------------------------------------------------------------------------% + +function updatePolaraxes(obj,plotIndex) + +%-------------------------------------------------------------------------% + +%-PLOT DATA STRUCTURE-% +plot_data = get(obj.State.Plot(plotIndex).Handle); + +%-------------------------------------------------------------------------% + +%-setting polar axes-% +gridcolor = 'rgb(235,235,235)'; +linecolor = 'rgb(210,210,210)'; + +%-R-axis-% +obj.layout.polar.angularaxis.tickmode = 'array'; +obj.layout.polar.angularaxis.tickvals = plot_data.ThetaTick(1:end-1); +obj.layout.polar.angularaxis.gridcolor = gridcolor; +obj.layout.polar.angularaxis.linecolor = linecolor; +obj.layout.polar.angularaxis.ticks = ''; + +%-Theta-axis-% +obj.layout.polar.radialaxis.angle = plot_data.RAxisLocation; +obj.layout.polar.radialaxis.tickmode = 'array'; +obj.layout.polar.radialaxis.tickvals = plot_data.RTick; +obj.layout.polar.radialaxis.gridcolor = gridcolor; +obj.layout.polar.radialaxis.showline = false; +obj.layout.polar.radialaxis.tickangle = 90; +obj.layout.polar.radialaxis.ticks = ''; + +%-------------------------------------------------------------------------% + +end + +function updatePolarline(obj,plotIndex) + +%-------------------------------------------------------------------------% + +%-PLOT DATA STRUCTURE- % +plot_data = get(obj.State.Plot(plotIndex).Handle); + +%-------------------------------------------------------------------------% + +%-scatterpolar type-% +obj.data{plotIndex}.type = 'scatterpolar'; + +%-------------------------------------------------------------------------% + +%-scatter visible-% +obj.data{plotIndex}.visible = strcmp(plot_data.Visible,'on'); + +%-------------------------------------------------------------------------% + +%-scatter r-data-% +obj.data{plotIndex}.r = abs(plot_data.RData); + +%-------------------------------------------------------------------------% + +%-scatter theta-data-% +obj.data{plotIndex}.theta = rad2deg(plot_data.ThetaData); + +%-------------------------------------------------------------------------% + +%-scatterpolar name-% +obj.data{plotIndex}.name = plot_data.DisplayName; + +%-------------------------------------------------------------------------% + +%-scatterpolar mode-% +if ~strcmpi('none', plot_data.Marker) ... + && ~strcmpi('none', plot_data.LineStyle) + mode = 'lines+markers'; +elseif ~strcmpi('none', plot_data.Marker) + mode = 'markers'; +elseif ~strcmpi('none', plot_data.LineStyle) + mode = 'lines'; +else + mode = 'none'; +end + +obj.data{plotIndex}.mode = mode; + +%-------------------------------------------------------------------------% + +%-scatter line-% +obj.data{plotIndex}.line = extractLineLine(plot_data); +obj.data{plotIndex}.line.width = 2 * obj.data{plotIndex}.line.width; + +%-------------------------------------------------------------------------% + +%-scatter marker-% +obj.data{plotIndex}.marker = extractLineMarker(plot_data); + +%-------------------------------------------------------------------------% + +%-scatter showlegend-% +leg = get(plot_data.Annotation); +legInfo = get(leg.LegendInformation); + +switch legInfo.IconDisplayStyle + case 'on' + showleg = true; + case 'off' + showleg = false; +end + +obj.data{plotIndex}.showlegend = showleg; + +%-------------------------------------------------------------------------% + +end \ No newline at end of file