📄 mfbox_plotnetworkwin.m
字号:
function [win,pls]=mfbox_plotnetworkwin(M,tcs,varargin)% Copyright by Peter Gruber, Fabian J. Theis% Signal Processing & Information Theory group% Institute of Biophysics, University of Regensburg, Germany% Homepage: http://research.fabian.theis.name% http://www-aglang.uni-regensburg.de%% This file is free software, subject to the % GNU GENERAL PUBLIC LICENSE, see gpl.txt%if (nargin>2), tl = varargin{1}; else, tl = 0:size(tcs,1); endif (nargin>3), tcmap = varargin{2}; else, tcmap = repmat(1:size(tcs,1),length(tl),1); endarrows = struct('from',{},'to',{},'color',{},'width',{});ics = struct('num',{},'pos',{},'size',{});lM = size(M,1);iM = imag(M)/max(imag(M(:)));M = real(M)/max(real(M(:)));p = [sin(2*pi*(1:lM)/lM);cos(2*pi*(1:lM)/lM)];s = min(4*pi/lM,sqrt(2));ap = (4-(s/sqrt(2)))/10;for i=1:lM for j=i+1:lM q = p(1:2,[i,j])*ap; if (M(i,j)>0.5) arrows(end+1) = struct('from',.5+q(:,1),'to',.5+q(:,2),'color',[0,1-iM(i,j),0],'width',4*M(i,j)); elseif (M(j,i)>0.5) arrows(end+1) = struct('from',.5+q(:,2),'to',.5+q(:,1),'color',[0,1-iM(j,i),0],'width',4*M(j,i)); end end ics(end+1) = struct('num',{{i,1:length(tl)}},'pos',[p(1,i)*.4+.5-s/20,p(2,i)*.4+.5-s/20],'size',[s/10,s/10]);endif (nargout==2) win = mfbox_congraph(); pls = {}; set(win,'Color',[1;1;1],'Units','pixel', ... 'Position',[1,1,400,400]); for i=1:length(arrows) annotation(win,'arrow',[arrows(i).from(1),arrows(i).to(1)], ... [arrows(i).from(2),arrows(i).to(2)], ... 'LineWidth',arrows(i).width,'Color',arrows(i).color); end for i=1:length(ics) a = axes('Position',[ics(i).pos,ics(i).size.*[1,.66]],'Units','normalized','Parent',win); num = ics(i).num{1}; seg = ics(i).num{2}; pls{num} = {plot(a,tl(seg),tcs(seg,num)),min(seg),num}; set(pls{num}{1},'Color',[0;0;0]); set(a,'XTickMode','manual','Color',.8*ones(3,1), ... 'XTickLabelMode','manual','YTickMode','manual', ... 'YTickLabelMode','manual','XTick',[],'XTickLabel',{}, ... 'YTick',[],'YTickLabel',{}); annotation(win,'textbox',[ics(i).pos+[0,.66].*ics(i).size,ics(i).size.*[1,.34]], ... 'FitHeightToText','off','String',{mat2str(num)}, ... 'VerticalAlignment','middle','HorizontalAlignment', ... 'center','EdgeColor',[1;1;1]); endelseif (nargout==1) win = sprintf('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg width="%1.4fpx" height="%1.4fpx" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n<defs id="defs">\n<marker orient="auto" refY="0.0" refX="0.0" id="Arrow2Lend" overflow="visible">\n<path fill-rule="evenodd" stroke-width="0.62500000" stroke-linejoin="round" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="scale(0.6) rotate(180) translate(1,0)"/>\n</marker>\n</defs>\n<g id="timewindowgraph">',1200,1000); for i=1:length(ics) ic = ''; num = ics(i).num{1}; seg = ics(i).num{2}; for j=1:length(seg) if ((isempty(ic))&&(~isempty(tcs{seg(j),num}))) ic = sprintf('<g transform="translate(%1.4f,%1.4f)">\n<g transform="scale(%1.4f,%1.4f)">\n%s</g>\n</g>\n',1000*ics(i).pos(1),1000*ics(i).pos(2),10*ics(i).size(1),10*ics(i).size(2),tcs{seg(j),num}); end end win = sprintf('%s\n%s',win,ic); end for i=1:length(arrows) c = floor(arrows(i).color*255); win = sprintf('%s\n<line x1="%1.4f" x2="%1.4f" y1="%1.4f" y2="%1.4f" stroke="#%02x%02x%02x" stroke-width="%1.4f" marker-end="url(#Arrow2Lend)"/>',win,1000*arrows(i).from(1),1000*arrows(i).to(1),1000*arrows(i).from(2),1000*arrows(i).to(2),c(1),c(2),c(3),2*arrows(i).width); end legend = sprintf('<g id="legend" transform="translate(1000,0)">\n<rect x="0" y="0" width="200" height="1000" fill="none" stroke="black" stroke-width="2" rx="10" ry="10"/>\n'); legendtext = {'green=delayed timecorrelations'}; for i=1:length(legendtext) legend = sprintf('%s<text x="5" y="%d">%s</text>\n',legend,i*20,legendtext{i}); end legend = sprintf('%s</g>\n',legend); win = sprintf('%s\n<rect x="0" y="0" width="1000" height="1000" fill="none" stroke="black" stroke-width="2" rx="10" ry="10" />\n</g>\n%s\n</svg>\n',win,legend);end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -