function figure_handle = getFigureByTag(tag_name, varargin) % figure_handle = getFigureByTag(tag_name, varargin) % % Example code: % f_h = getFigureByTag('survivalMeasurement','Name','Survival') % % clf(f_h); % a_h = gca(f_h); % xlim(a_h,[10,100]); % % custom position % f_h.Position = [4052.3 719.67 560 420]; assert(nargin>=1 && ischar(tag_name),'You must specify ``tag_name'' as a string.'); f_h = findobj('type','figure','tag',tag_name); if isempty(f_h) f_h = figure('Tag',tag_name,varargin{:}); defaultNewFigProperties = {'Color','w','NumberTitle','off','Name',sprintf('Fig. %d',f_h.Number)}; varargin = [defaultNewFigProperties,varargin]; else f_h = f_h(1); end if ~isempty(varargin) set(f_h,varargin{:}); end addCopyButton(f_h); if nargout > 0 figure_handle = f_h; else set(groot,'CurrentFigure',f_h); end end function addCopyButton(f_h) if(strcmp(f_h.ToolBar,'none')) return end tb = findall(f_h,'Type','uitoolbar'); pt = findall(tb, 'tag', 'Custom.CopyPlot' ); if isempty(pt) pt = uipushtool(tb); else pt = pt(1); end cdata = zeros(16,16,3); % Evernote Logo % cdata(:,:,1) =[255 NaN NaN NaN NaN 99 11 27 175 NaN NaN NaN NaN NaN NaN 255 % NaN NaN NaN 251 93 14 0 0 0 66 70 106 210 NaN NaN NaN % NaN NaN NaN 42 0 43 0 0 0 0 0 0 20 185 NaN NaN % NaN 243 56 0 42 82 0 0 0 0 0 0 0 45 NaN NaN % NaN 156 44 64 113 65 0 0 0 0 0 0 0 32 NaN NaN % 136 9 26 28 11 0 0 0 0 0 0 0 0 10 188 NaN % 132 0 0 0 0 0 0 0 0 0 136 175 16 0 133 NaN % NaN 28 0 0 0 0 0 0 0 0 152 238 50 0 124 NaN % NaN 58 0 0 0 0 0 0 0 0 0 9 0 0 71 NaN % NaN 175 0 0 0 0 0 61 15 0 0 0 0 0 100 NaN % NaN NaN 143 12 0 0 0 210 195 87 17 0 0 0 126 NaN % NaN NaN NaN 183 118 50 150 NaN NaN 110 219 78 0 0 160 NaN % NaN NaN NaN NaN NaN NaN NaN 191 0 35 NaN 150 0 23 NaN NaN % NaN NaN NaN NaN NaN NaN NaN 124 0 172 NaN 81 0 93 NaN NaN % 255 NaN NaN NaN NaN NaN NaN 183 0 0 0 0 51 228 NaN 245 % 253 254 NaN NaN NaN NaN NaN NaN 156 63 45 100 NaN NaN 255 255]/255.; % % % cdata(:,:,2) = [255 255 255 255 255 216 166 171 225 229 218 229 247 255 255 255 % 255 255 255 255 201 166 159 157 167 188 189 200 243 255 255 255 % 237 238 255 181 159 183 164 170 163 158 160 157 169 233 248 250 % 224 235 188 140 182 195 161 168 168 168 168 169 147 186 244 240 % 255 226 175 185 207 189 161 168 168 168 168 168 159 179 249 249 % 227 172 172 179 172 163 169 168 168 170 163 155 160 173 231 237 % 215 161 163 165 166 168 168 168 168 162 215 228 172 163 209 219 % 248 178 159 168 168 168 168 168 168 159 220 249 185 158 208 222 % 249 192 151 169 168 168 169 160 163 172 163 159 166 167 194 204 % 246 229 155 157 168 169 159 188 174 154 162 167 166 166 202 214 % 212 231 218 168 157 153 165 255 242 190 171 159 167 166 207 220 % 218 203 251 243 206 181 230 210 208 207 242 196 154 168 223 232 % 255 224 232 250 237 214 244 194 152 178 255 223 145 175 250 252 % 255 255 244 239 222 213 240 214 149 228 254 199 136 203 244 232 % 255 255 255 246 231 246 246 232 165 159 167 147 184 253 254 242 % 253 254 255 255 254 255 255 255 231 183 178 199 249 255 255 255]/255.; % % % cdata(:,:,3) = [255 255 255 255 255 117 38 50 187 211 170 190 234 255 255 255 % 255 254 255 255 120 51 27 20 39 97 98 122 220 255 255 255 % 238 252 246 73 22 71 37 49 35 20 24 18 49 196 231 231 % 232 242 86 0 78 108 29 45 45 45 45 46 0 82 214 201 % 255 175 63 85 139 98 27 45 45 45 45 45 23 72 233 231 % 167 51 57 72 55 32 47 45 45 50 34 14 27 57 201 218 % 154 30 33 38 39 45 45 45 45 31 157 188 53 34 153 180 % 234 67 24 45 45 45 45 44 45 24 169 241 83 20 146 182 % 241 99 4 48 45 45 47 28 35 53 32 26 39 44 104 127 % 238 192 14 20 45 47 27 97 56 10 29 44 41 40 127 158 % 214 253 169 37 20 16 34 218 207 105 55 23 42 40 147 182 % 218 214 241 201 138 71 177 225 181 130 224 107 12 45 175 197 % 255 233 202 218 212 132 230 196 27 61 255 172 0 64 240 242 % 255 255 219 197 176 160 237 143 0 195 245 110 0 123 230 230 % 255 255 255 227 197 241 244 202 36 24 39 0 81 228 242 245 % 253 254 255 255 254 255 255 255 191 78 71 121 221 255 255 255]/255.; %OneNote logo cdata(:,:,1) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 245 213 213 213 213 213 213 213 184 184 215 255 255 255 255 255 241 213 213 213 213 213 213 213 184 184 208 255 255 233 204 204 194 176 176 185 213 213 213 213 184 184 208 255 255 154 101 101 101 101 101 103 213 213 213 206 162 162 193 255 255 152 101 183 116 152 115 101 213 213 213 206 162 162 193 255 255 152 101 207 189 178 122 101 213 213 213 206 162 162 193 255 255 152 101 199 152 224 122 101 213 213 213 195 128 128 170 255 255 152 101 166 101 183 115 101 213 213 213 195 128 128 170 255 255 154 101 101 101 101 101 103 213 213 213 195 128 128 170 255 255 233 204 204 194 176 176 185 213 213 213 183 95 95 148 255 255 255 255 255 241 213 213 213 213 213 213 183 94 94 148 255 255 255 255 255 245 213 213 213 213 213 213 183 94 94 163 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.; cdata(:,:,2) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 219 112 110 110 110 110 110 134 84 84 158 255 255 255 255 255 207 110 110 110 110 110 110 134 84 84 141 255 255 222 178 178 146 81 81 88 110 110 110 134 84 84 141 255 255 102 23 23 23 23 23 24 110 110 110 125 58 58 123 255 255 100 23 147 46 100 44 23 110 110 110 125 58 58 123 255 255 100 23 183 156 139 55 23 110 110 110 125 58 58 123 255 255 100 23 170 99 208 55 23 110 110 110 119 38 38 109 255 255 100 23 121 23 146 44 23 110 110 110 119 38 38 109 255 255 102 23 23 23 23 23 24 110 110 110 119 38 38 109 255 255 222 178 178 146 81 81 88 110 110 110 118 37 37 109 255 255 255 255 255 207 110 110 110 110 110 110 118 37 37 110 255 255 255 255 255 219 112 110 110 110 110 110 118 37 37 131 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.; cdata(:,:,3) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 229 229 240 255 255 255 255 255 255 255 255 255 255 255 255 246 229 229 238 255 255 242 224 224 224 224 224 232 255 255 255 246 229 229 238 255 255 194 163 163 163 163 163 164 255 255 255 244 223 223 234 255 255 194 163 212 172 194 171 163 255 255 255 244 223 223 234 255 255 194 163 226 216 209 176 163 255 255 255 244 223 223 234 255 255 194 163 221 193 236 176 163 255 255 255 240 209 209 224 255 255 194 163 202 163 212 171 163 255 255 255 240 209 209 224 255 255 194 163 163 163 163 163 164 255 255 255 240 209 209 224 255 255 242 224 224 224 224 224 232 255 255 255 223 161 161 192 255 255 255 255 255 255 255 255 255 255 255 255 223 160 160 192 255 255 255 255 255 255 255 255 255 255 255 255 223 160 160 201 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.; pt.Tag = 'Custom.CopyPlot'; pt.CData = cdata; pt.Separator = true; pt.ClickedCallback = @copyToClipboard; end function copyToClipboard(~,~) fig_h = get(get(gcbo,'Parent'),'Parent'); if strcmp(fig_h.WindowStyle,'docked') if ismac || ispc matlab.graphics.internal.copyFigureHelper(fig_h); else %warning('Copy function to the clipboard only works if the figure is undocked.'); Helper.screencapture(fig_h,[],'clipboard'); end else pos = fig_h.Position; Helper.screencapture(fig_h,[],'clipboard','position',[7,7,pos(3)-2,pos(4)]); end end