SHOW:
|
|
- or go back to the newest paste.
| 1 | %% code for SO question: http://stackoverflow.com/questions/24744959 | |
| 2 | clear | |
| 3 | - | testdata=combvec(1:20,1:20).'; % all possible edges |
| 3 | + | |
| 4 | [X,Y] = ndgrid(1:20); testdata = [X(:) Y(:)]; % all possible edges | |
| 5 | testdata(testdata(:,1)==testdata(:,2),:)=[]; % delete self loops | |
| 6 | testdata=testdata(randperm(size(testdata,1),30),:); % take random sample of edges | |
| 7 | testdata(:,3)=rand(size(testdata,1),1)*10; % assign random weights in range 0-10 | |
| 8 | ||
| 9 | %% get data into useable format | |
| 10 | edges=testdata(:,1:2); % | |
| 11 | [Verticies,~,indEdges]=unique(edges); | |
| 12 | indEdges=reshape(indEdges,[],2); | |
| 13 | ||
| 14 | weights=testdata(:,3); | |
| 15 | normalisedWeights=weights/max(weights); | |
| 16 | numeEdge=numel(weights); | |
| 17 | ||
| 18 | numVertex=numel(Verticies); | |
| 19 | ||
| 20 | %% create x,y coordinates for each vertex | |
| 21 | theta=linspace(0,2*pi,numVertex+1); | |
| 22 | theta=theta(1:end-1); | |
| 23 | [x,y]=pol2cart(theta,1); | |
| 24 | ||
| 25 | %% create axis colour order | |
| 26 | colormap('autumn')
| |
| 27 | ||
| 28 | Cmap(:,2)=normalisedWeights; | |
| 29 | Cmap(:,1)=1; | |
| 30 | Cmap(:,3)=0; | |
| 31 | ||
| 32 | %% plot edges | |
| 33 | figure | |
| 34 | colormap('autumn')
| |
| 35 | hold on | |
| 36 | set(gca,'colororder',Cmap) % set axis colororder to Cmap | |
| 37 | hline=plot(x(indEdges).',y(indEdges).'); %plot edges | |
| 38 | axis square off | |
| 39 | ||
| 40 | set(gca,'Clim',[0 max(weights)]) | |
| 41 | colorbar %set colour limit to match weight & add colorbar | |
| 42 | - | scalefactor=5/max(weights); % scale factor (highest weight is given width 5) |
| 42 | + | |
| 43 | - | arrayfun(@(hline,n)set(hline,'linewidth',scalefactor*weights(n)),hline,(1:numel(hline)).') |
| 43 | + | scalefactor=5; %// scale factor (width of highest weight line) |
| 44 | - | % set edge widths proportional to weight |
| 44 | + | set(hline, {'LineWidth'}, num2cell(normalisedWeights*scalefactor));
|
| 45 | ||
| 46 | %% plot Verticies | |
| 47 | plot(x,y,'ks') | |
| 48 | ||
| 49 | xlim([-1.1,1.1]) % expand axis to fix labels | |
| 50 | ylim([-1.1,1.1]) | |
| 51 | text(x(:)*1.1, y(:)*1.1, num2str(Verticies), 'FontSize',8,'HorizontalAlignment','center'); | |
| 52 | % add Vertex labels |