如何在突出显示的图表中添加图例?

时间:2017-06-10 01:09:09

标签: matlab plot graph matlab-figure legend

我想根据不同的突出边缘在图表G中添加图例。是否可以只使用一个图openssl pkcs12 -export -chain -CAfile gd_bundle-g2-g1.crt -in combinedcerts -inkey tomcatkey.pem -out new.tomcat.keystore -name tomcat -passout pass:pa$$word

来完成

这是一个玩具的例子。我有一个情节G

G

根据边缘类型,我用3种颜色突出显示了所有边缘。 3种类型的边缘表示在我的情况下节点之间有3种不同的关系。

这是我突出显示所有边缘的方式:

adj =[0 0 1 1 1;   % adjacency matrix
      1 0 1 0 1;
      0 1 0 1 1;
      1 1 1 0 1;
      0 0 1 0 0]
G = digraph(adj);

我的问题的困难在于我必须删除其外度小于某些整数的顶点(比如说它的2)。因此,我无法独立绘制3幅图。

M(:,:,1)=[0 0 1 0 0;1 0 0 0 1;0 0 0 0 0;1 0 0 0 0;0 0 1 0 0];
M(:,:,2)=[0 0 0 1 0; 0 0 1 0 0;0 1 0 0 1;0 0 0 0 0;0 0 0 0 0];              
M(:,:,3)=[0 0 0 0 1; 0 0 0 0 0; 0 0 0 1 0;0 1 1 0 1;0 0 0 0 0];

然后我们可以绘制它。

rmvNode=find(outdegree(G)<2);    % outdegree is the reason why single G is neccesary
adj(rmvNode,:)=[]; adj(:,rmvNode)=[];
M(:,rmvNode,:)=[]; M(rmvNode,:,:)=[];
G=digraph(adj);

enter image description here 我的理想情况是这样的图例:将红色边缘分配给标签&#39;输入1&#39;,将蓝色边缘分配给&#39;输入2&#39;,并将绿色边缘分配给&#39;类型3& #39 ;.我想要这样的东西:

enter image description here

再一次:我不能根据M中的3个页面独立绘制3个图形,将3个图形组合在一起然后添加图例。正如您所看到的那样,for k=1:3 %Looping depending on the third dimension [r,c]= find(M(:,:,k)); %Finding non-zero elements s{k}=r; t{k}=c; end h=plot(G); highlight(h,s{1},t{1},'EdgeColor','r'); highlight(h,s{2},t{2},'EdgeColor','g'); highlight(h,s{3},t{3},'EdgeColor','b'); 需要一个完整的图表outdegree作为输入,将G划分为GG1并且不可行G2

1 个答案:

答案 0 :(得分:2)

一种方法是通过添加一个不可见的legend来操纵plot函数:

%put this at the end of your code
hold on;                                      %to retain current plot
ax=plot(NaN,NaN,'r',NaN,NaN,'g',NaN,NaN,'b'); %plotting invisible points of desired colors
legend(ax,'Type 1','Type 2','Type 3');        %adding the legend

给出:

output