function [mn,x,xx]=pplot_branches2(R1,str,nmax,angle,f1,f2,mn,col,FontSize,LineWidth,MarkerSize);

R2=[];
R2=R1;
temp=R2(1,:);
R2(1,:)=R2(nmax,:);
R2(nmax,:)=temp;
temp=R2(:,1);
R2(:,1)=R2(:,nmax);
R2(:,nmax)=temp;
clear temp;
temp=str(1);
str(1)=str(nmax);
str(nmax)=temp;
clear temp;
E=tree2lst_nosort(R2);
count=[];
count=[count,1];
level=zeros(1,col);
level(1,1)=1;
z=1;
while z~=0;
    clear temp;
    temp=zeros(1,col);
    k=1;
    for i=1:count(z)
        for j=1:col
            if level(z,i)~=j & R2(level(z,i),j)~=inf
                temp(1,k)=j;
                R2(j,level(z,i))=inf;
                k=k+1;
            end
        end
    end
    if k==1
       z=0;
   else
       level=[level;temp];
       count=[count,k-1];
       z=z+1;
   end
end
cords=zeros(col,2);
b=[];
used=zeros(1,size(E,1));
%poshitaem stepen wershin i wyberem maximalnuu
stepen=zeros(1,col);
for i=1:size(E,1)
    stepen(E(i,1))=stepen(E(i,1))+1;
end
max=stepen(1);
first=1;
for i=2:col
    if stepen(i)>max
        max=stepen(i)
        first=i;
    end
end
%first=10;
cords(first,1)=0;%+radius*cos(angle_min+j*angle_step);%j/(count(i)+1);
cords(first,2)=0;%+radius*sin(angle_min+j*angle_step);
%xx=plot(0,0,'ko');
%set(xx,'Visible','off');
%b(first)=xx;

used(first)=1;
   
[b,cords,used]=branch_rec(E,first,used,0,0,0*3.14,2*3.14,10,b,cords);
%for i=1:size(count,2)
%    xcoord=0;
%    ycoord=0;
%    radius=10*i;
%    angle_min=0;
%    angle_max=3.14*2;
%    angle_step=(angle_max-angle_min)/count(i);
%    for j=1:count(i)
        %cords(level(i,j),1)=j/(count(i)+1);
        %cords(level(i,j),2)=-i;
%        cords(level(i,j),1)=xcoord+radius*cos(angle_min+j*angle_step);%j/(count(i)+1);
%        cords(level(i,j),2)=xcoord+radius*sin(angle_min+j*angle_step);

%        xx=plot(j/(count(i)+1),-i,'ko');
%        set(xx,'Visible','off');
%        b(level(i,j))=xx;
%    end
%end
clear R2;
maspoints=[];
for i=1:col
    pointsstr=[];
    %xx=plot(cords(i,1),cords(i,2),'ko');
    pointsstr.x=cords(i,1);
    pointsstr.y=cords(i,2);
    pointsstr.color=str(i).color;
    
    %set(xx,'MarkerFaceColor',str(i).color);
    %set(xx,'MarkerSize',MarkerSize);
    %set(xx,'Visible','on');
    %b(i)=xx;
    a=[];
    a.color=str(i).color;
    a.color_bw=str(i).color_bw;
    a.color_bw1=str(i).color_bw1;
    a.symvol=str(i).symvol;
    xx_border=plot(cords(i,1),cords(i,2),'ko');% Точка за реальной точкой. Обечайка
    set(xx_border,'MarkerFaceColor',[0 0 0]);
    set(xx_border,'MarkerEdgeColor',[0 0 0]);
    set(xx_border,'MarkerSize',MarkerSize*1.3);
    set(xx_border,'Visible','off');
    
    yy=text(cords(i,1),cords(i,2)-0.25,str(i).name,'fontsize',FontSize);
    a.text=yy;
    a.border=xx_border;
    a.links=[];
    pointsstr.userdata=a;
    %a.links=get(b(i),'UserData');
    %set(xx,'UserData',a);
    %set(xx,'ButtonDownFcn','mvv');
    %mn=[mn,xx];
    maspoints=[maspoints;pointsstr];
 %   delete(b(i));
end


for i=1:size(E,1)
    xx=plot([cords(E(i,1),1),cords(E(i,2),1)],[cords(E(i,1),2),cords(E(i,2),2)],'k-','LineWidth',LineWidth);
    %a=get(b(E(i,1)),'Userdata');
    %z=get(b(E(i,2)),'Userdata');
    ibeg=E(i,1);
    iend=E(i,2);
    maspoints(ibeg).userdata.links=[maspoints(ibeg).userdata.links,xx];
    maspoints(iend).userdata.links=[maspoints(iend).userdata.links,xx];
    %a.links=[a.links,xx];
    %z.links=[z.links,xx];
    %set(b(E(i,1)),'Userdata',a);
    %set(b(E(i,2)),'Userdata',z);
end
for i=1:col
    %symvol=['k' str(i).symvol];
%maspoints(i).x
%maspoints(i).y
    xx=plot(maspoints(i).x,maspoints(i).y,'ko');
    %get(xx);
    pointsstr.color=str(i).color;
    b(i)=xx;
    if f2==1
        set(xx,'MarkerFaceColor',maspoints(i).color);
        set(xx,'MarkerSize',MarkerSize);
        set(xx,'LineWidth',0.5);
    else
        %maspoints(i).userdata.color_bw
        %set(xx,'markerfacecolor',maspoints(i).userdata.color_bw);
        %setshape(xx,maspoints(i).userdata.color_bw(1));
        maspoints(i).userdata.symvol
        set(xx,'Marker',maspoints(i).userdata.symvol);
        set(xx,'Markerfacecolor',[0 0 0]);
        set(xx,'MarkerEdgeColor',[0 0 0]);%maspoints(i).userdata.color_bw1);
        set(xx,'MarkerSize',MarkerSize);
        set(xx,'LineWidth',2);
    end
    set(xx,'Visible','on');
    b(i)=xx;
    %pointsstr.userdata=a;
    %a.links=get(b(i),'UserData');
    set(xx,'UserData',maspoints(i).userdata);
    set(xx,'ButtonDownFcn','mvv');
    mn=[mn,xx];
    %maspoints=[maspoints;pointsstr];
 %   delete(b(i));

end
min_legend(str,f2,MarkerSize,FontSize);
x=0;


function [b,coords,used]=branch_rec(E,first,used,x,y,angle,anglerange,radius,b,coords);
% рекурсивная функция построения графа ветвями.
%E-матрица связей,first - номер єлемента, с которого строим данную ветвь;
%used - массив флагов для использованніх ,x,y,-координаті точки, вокруг
%которой строится ветвь, angle угол вектора - направления ветви (от
%центра),radius- радиус разброса.

% Ищу неиспользованные узлы, связанные с первым элементом
nlinks=size(E,1);
firstlinks=[];
for i=1:nlinks
    if (E(i,1)==first)&&(used(E(i,2))==0)
        firstlinks=[firstlinks,E(i,2)];
    end
end
%Отберем из них тех, которые имеют продолжение (подветви)
n=length(firstlinks);
coll=zeros(1,n);
short=[];
long=[];
for i=1:n
    for j=1:nlinks
        if (E(j,1)==firstlinks(i))
            coll(i)=coll(i)+1;
        end
    end
    if coll(i)>0
        long=[long,firstlinks(i)];
    else
        short=[short,firstlinks(i)];
    end
end
nlong=length(long);
nshort=length(short);
if (nshort>0)
    longstep=round(nlong/nshort);
else
    longstep=1;
end
if (longstep<1)
    longstep=1;
end
if (nlong>0)
    shortstep=round(nshort/nlong);
else
    shortstep=1;
end
if (shortstep<1)
    shortstep=1;
end

ilong=1;
ishort=1;
alllist=[];
alllist_long=[];
while ((ilong<=nlong)||(ishort<=nshort))
    iend=ilong+longstep-1;
    if iend>nlong
        iend=nlong;
    end
    for i=ilong:iend
        alllist=[alllist,long(i)];
        alllist_long=[alllist_long,1];        
    end
    ilong=iend+1;
    iend=ishort+shortstep-1;
    if iend>nshort
        iend=nshort;
    end
    for i=ishort:iend
        alllist=[alllist,short(i)];
        alllist_long=[alllist_long,0];       
    end
    ishort=iend+1;
end
nalllist=length(alllist);
if (n~=nalllist)
    fprintf(1,'Trevoga! Propali koordinaty odnogo uzla!\n');
end
iangle=angle-anglerange/2;
if (nalllist>1)
    stepangle=anglerange/nalllist;
else
    stepangle=0;
    anglerange=0;
end
iangle=angle-anglerange/2;
%coords=zeros(col,2);
%b=[];

for i=1:nalllist
    if (alllist_long(i)==1)
        xcoord=x+radius*cos(iangle);
        ycoord=y+radius*sin(iangle);
    else
        xcoord=x+radius*cos(iangle);
        ycoord=y+radius*sin(iangle);
    end        
    iangle=iangle+stepangle;
    coords(alllist(i),1)=xcoord;%+radius*cos(angle_min+j*angle_step);%j/(count(i)+1);
    coords(alllist(i),2)=ycoord;%+radius*sin(angle_min+j*angle_step);
    %xx=plot(xcoord,ycoord,'ko');%otladka
    %set(xx,'Visible','off');
    %b(alllist(i))=xx;
    used(alllist(i))=1;
end
iangle=angle-anglerange/2;
for i=1:nalllist
    if (alllist_long(i)==1)
        xcoord=x+radius*cos(iangle);
        ycoord=y+radius*sin(iangle);
    else
        xcoord=x+radius*cos(iangle);
        ycoord=y+radius*sin(iangle);
    end        


    if (alllist_long(i)==1)
        %xx=plot(xcoord,ycoord,'>');%otladka
        [b,coords,used]=branch_rec(E,alllist(i),used,xcoord,ycoord,iangle,3.14/3,radius,b,coords);
    end
        iangle=iangle+stepangle;
end
