Hi Tamas,

Thanks for your response and for your suggestion. I will try to follow your
suggestion to create my layout without overlapping nodes. I also created a
question in Stackoverflow:
http://stackoverflow.com/questions/35018513/layout-of-nodes-in-a-2d-graph-with-fixed-y-positions-and-random-non-overlapping

I will let you know about any progress I make on it!

Best,

Charles



On 26 January 2016 at 22:18, Tamas Nepusz <[email protected]> wrote:

> Hi Charles,
>
> As far as I know, no one has implemented this before, but it seems
> vaguely similar to the Sugiyama layout - although that one does not
> consider node overlap either, mostly because the entire concept of
> "overlap" is hard to define at the layout stage; igraph's layout
> algorithms treat the vertices as points with zero area and know
> nothing about how many pixels a vertex will cover when plotted on the
> screen (mostly because it depends on too many factors). So, your best
> bet is probably to find the widest label in your graph and then
> "guesstimate" the width of that node by multiplying the length of the
> string with some constant. Then you have an upper bound on the width
> and height of a node, and you can use that to set up sensible "gaps"
> in the layout.
>
> T.
>
>
> On Tue, Jan 26, 2016 at 5:08 PM, Charles Novaes de Santana
> <[email protected]> wrote:
> > Dear all,
> >
> > Does any of you have an idea about how to automatically generate a layout
> > for a 2D graph considering that:
> >
> > 1 - the user gives the Y-position of the nodes
> > 2 - the user don't care about the X-position of the nodes
> > 3 - the nodes can have different sizes
> > 4 - the nodes can not overlap
> > 5 - the nodes should show their numeric labels, preferably inside them
> >
> > I was planning to do this by myself, creating the X-positions according
> to
> > the number of nodes in each "level" of the graph and to the maximum size
> of
> > a node. And I decided to write to the list just to see if anyone have
> > implemented it before and could help me.
> >
> > Please consider the code below as a starting point:
> >
> > ```
> > library(igraph)
> >
> > nnodes = 100;#number of nodes is 100
> > g<-erdos.renyi.game(nnodes,0.07);#random graph with nnodes nodes
> > ypos<-round(runif(nnodes,min=0,max=3))#positions between 0 and 10
> > mysizes<-runif(nnodes,min=8,max=16)#sizes between 3 and 10
> > xpos<-runif(nnodes)
> > mylayout<-as.matrix(cbind(xpos,ypos))
> >
> > png("./test.png",width=1980,height=1240,res=100)
> > plot(g, layout=mylayout, vertex.size=sizes, axes = FALSE, rescale=FALSE,
> > ylim=range(ypos), vertex.size=mysizes)
> > dev.off();
> > ```
> > The resulting figure is here
> >
> > Any suggestion about how to define the vector xpos in such a way that I
> can
> > avoid nodes to overlap? Any other suggestion to create the layout?
> >
> > Thanks for any help!
> >
> > Charles
> >
> > --
> > Um axé! :)
> >
> > --
> > Charles Novaes de Santana, PhD
> > https://github.com/cndesantana
> >
> > _______________________________________________
> > igraph-help mailing list
> > [email protected]
> > https://lists.nongnu.org/mailman/listinfo/igraph-help
> >
>
> _______________________________________________
> igraph-help mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/igraph-help
>



-- 
Um axé! :)

--
Charles Novaes de Santana, PhD
https://github.com/cndesantana
_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to