1
+ function obj = updateLegendMultipleAxes(obj , legIndex )
2
+
3
+ % x: ...[DONE]
4
+ % y: ...[DONE]
5
+ % traceorder: ...[DONE]
6
+ % font: ...[DONE]
7
+ % bgcolor: ...[DONE]
8
+ % bordercolor: ...[DONE]
9
+ % borderwidth: ...[DONE]
10
+ % xref: ...[DONE]
11
+ % yref: ...[DONE]
12
+ % xanchor: ...[DONE]
13
+ % yanchor: ...[DONE]
14
+
15
+ % =========================================================================%
16
+ %
17
+ % -GET NECESSARY INFO FOR MULTIPLE LEGENDS-%
18
+ %
19
+ % =========================================================================%
20
+
21
+ for traceIndex = 1 : obj .State .Figure .NumPlots
22
+ allNames{traceIndex } = obj.data{traceIndex }.name;
23
+ allShowLegens(traceIndex ) = obj.data{traceIndex }.showlegend;
24
+ obj.data{traceIndex }.showlegend = false ;
25
+ obj.data{traceIndex }.legendgroup = obj.data{traceIndex }.name;
26
+
27
+ axIndex = obj .getAxisIndex(obj .State .Plot(traceIndex ).AssociatedAxis);
28
+ [xSource , ySource ] = findSourceAxis(obj , axIndex );
29
+ xAxis = eval(sprintf(' obj.layout.xaxis%d ' , xSource ));
30
+ yAxis = eval(sprintf(' obj.layout.yaxis%d ' , xSource ));
31
+
32
+ allDomain(traceIndex , 1 ) = max(xAxis .domain );
33
+ allDomain(traceIndex , 2 ) = max(yAxis .domain );
34
+ end
35
+
36
+ [~ , groupIndex ] = unique(allNames );
37
+
38
+ for traceIndex = groupIndex '
39
+ obj.data{traceIndex }.showlegend = allShowLegens(traceIndex );
40
+ end
41
+
42
+ % -------------------------------------------------------------------------%
43
+
44
+ % -STANDARDIZE UNITS-%
45
+ legendUnits = get(obj .State .Legend(legIndex ).Handle,' Units' );
46
+ fontUnits = get(obj .State .Legend(legIndex ).Handle,' FontUnits' );
47
+ set(obj .State .Legend(legIndex ).Handle,' Units' ,' normalized' );
48
+ set(obj .State .Legend(legIndex ).Handle,' FontUnits' ,' points' );
49
+
50
+ % -------------------------------------------------------------------------%
51
+
52
+ % -LEGEND DATA STRUCTURE-%
53
+ legendData = get(obj .State .Legend(legIndex ).Handle);
54
+
55
+ % only displays last legend as global Plotly legend
56
+ obj.layout.legend = struct();
57
+
58
+ % -------------------------------------------------------------------------%
59
+
60
+ % -layout showlegend-%
61
+ obj.layout.showlegend = strcmpi(legendData .Visible ,' on' );
62
+
63
+ % -------------------------------------------------------------------------%
64
+
65
+ % -legend (x,y) coordenates-%
66
+ obj.layout.legend.x = 1.005 * max(allDomain(: ,1 ));
67
+ obj.layout.legend.y = 1.001 * max(allDomain(: ,2 ));;
68
+
69
+ % -legend (x,y) refs-%
70
+ obj.layout.legend.xref = ' paper' ;
71
+ obj.layout.legend.yref = ' paper' ;
72
+
73
+ % -legend (x,y) anchors-%
74
+ obj.layout.legend.xanchor = ' left' ;
75
+ obj.layout.legend.yanchor = ' top' ;
76
+
77
+ % -------------------------------------------------------------------------%
78
+
79
+ if (strcmp(legendData .Box ,' on' ) && strcmp(legendData .Visible , ' on' ))
80
+
81
+ % ---------------------------------------------------------------------%
82
+
83
+ % -legend traceorder-%
84
+ obj.layout.legend.traceorder = ' normal' ;
85
+
86
+ % ---------------------------------------------------------------------%
87
+
88
+ % -legend borderwidth-%
89
+ obj.layout.legend.borderwidth = legendData .LineWidth ;
90
+
91
+ % ---------------------------------------------------------------------%
92
+
93
+ % -legend bordercolor-%
94
+ col = 255 * legendData .EdgeColor ;
95
+ obj.layout.legend.bordercolor = sprintf(' rgb(%f ,%f ,%f )' , col );
96
+
97
+ % ---------------------------------------------------------------------%
98
+
99
+ % -legend bgcolor-%
100
+ col = 255 * legendData .Color ;
101
+ obj.layout.legend.bgcolor = sprintf(' rgb(%f ,%f ,%f )' , col );
102
+
103
+ % ---------------------------------------------------------------------%
104
+
105
+ % -legend font size-%
106
+ obj.layout.legend.font.size = legendData .FontSize ;
107
+
108
+ % ---------------------------------------------------------------------%
109
+
110
+ % -legend font family-%
111
+ obj.layout.legend.font.family = matlab2plotlyfont(legendData .FontName );
112
+
113
+ % ---------------------------------------------------------------------%
114
+
115
+ % -legend font colour-%
116
+ col = 255 * legendData .TextColor ;
117
+ obj.layout.legend.font.color = sprintf(' rgb(%f ,%f ,%f )' , col );
118
+
119
+ end
120
+
121
+ % -------------------------------------------------------------------------%
122
+
123
+ % -REVERT UNITS-%
124
+ set(obj .State .Legend(legIndex ).Handle,' Units' ,legendUnits );
125
+ set(obj .State .Legend(legIndex ).Handle,' FontUnits' ,fontUnits );
126
+
127
+ end
0 commit comments