[Summit] XEP dependency graph

Peter Waher Peter.Waher at clayster.com
Tue Jul 30 01:59:32 UTC 2013


Hello

The first mail bounced, because of its size. Perhaps the moderator will allow it so you can see the graphs in their original size (1600 x 1600). Meanwhile, I posted them on Twitter. Not sure however, to get see them in their original sizes.  But it is possible to barely read the names of the documents in the graph.

Sincerely,
Peter Waher


From: Peter Waher
Sent: den 29 juli 2013 21:42
To: 'Yusuke DOI'; XMPP Summit
Subject: RE: [Summit] XEP dependency graph


Hello



Thanks. Used this data to create a circle reference graph of dependencies. Including all documents in the list, returns this graph:

https://twitter.com/PeterWaher/status/362025779875442688/photo/1



Removing supporting documents, and only plotting dependencies between XEPs, returns this graph:

https://twitter.com/PeterWaher/status/362028135253934081/photo/1



I used Clayster Script to produce these images. It uses mainly a .NET GDI Canvas object with standard drawing methods to do the actual drawing, so it should be easy to port to any other language, if somebody is interested.



To create the graph:



CircularReferenceGraph(Width,Height,Margin,M,BorderColor,ConnectionColor,TextColor):=

(

                             CenterX:=Width/2;

                             CenterY:=Height/2;

                             Center:={x:CenterX,y:CenterY};



                             BorderPen:=Pen(BorderColor,2);

                             ConnectionPen:=Pen(ConnectionColor,1);

                             TextSize:=Margin/max(Documents.Length);

                             TextFont:=Font("Arial",TextSize);

                             TextBrush:=SolidBrush(TextColor);

                             TextHalfSize:=TextSize/2;



                             Documents:=M[0,]{} union M[1,]{};

                             NrDocuments:=Documents.Count;



                             IndexByName:=Create(System.Collections.Generic.Dictionary,System.String,System.Double);

                             Index:=0;

                             foreach Document in Documents do

                                                          IndexByName[Document]:=Index++;



                             foreach Reference in Rows(M) do

                                                          Name:=Reference[1];



                             DiagramPos(Index):=

                             (

                                                          Angle:=2*pi*Index/NrDocuments;

                                                          {

                                                                                       x:CenterX+(CenterX-Margin)*sin(Angle),

                                                                                       y:CenterY-(CenterY-Margin)*cos(Angle)

                                                          }

                             );



                             Interpolate(P1,P2,t):=

                             (

                                                          {

                                                                                       x:P1.x*(1-t)+P2.x*t,

                                                                                       y:P1.y*(1-t)+P2.y*t

                                                          }

                             );



                             C:=Canvas(Width,Height);

                             C.DrawEllipse(BorderPen,Margin,Margin,Width-2*Margin,Height-2*Margin);



                             foreach Reference in Rows(M) do

                             (

                                                          I1:=IndexByName[Reference[0]];

                                                          I2:=IndexByName[Reference[1]];

                                                          P1:=DiagramPos(I1);

                                                          P2:=DiagramPos(I2);

                                                          IndexDiff:=(I1-I2) mod (NrDocuments/2);

                                                          t:=sqrt(IndexDiff/NrDocuments/2);

                                                          P1_1:=Interpolate(P1,Center,t);

                                                          P2_1:=Interpolate(P2,Center,t);

                                                          C.DrawBezier(ConnectionPen,P1.x,P1.y,P1_1.x,P1_1.y,P2_1.x,P2_1.y,P2.x,P2.y);

                             );



                             foreach Document in Documents do

                             (

                                                          I1:=IndexByName[Document];

                                                          C.TranslateTransform(CenterX,CenterY);

                                                          C.RotateTransform(I1*360/NrDocuments-90);

                                                          C.DrawString(Document,TextFont,TextBrush,CenterX-Margin,-TextHalfSize);

                                                          C.ResetTransform();

                             )

);



Sincerely,

Peter Waher





-----Original Message-----
From: Yusuke DOI [mailto:yusuke.doi at toshiba.co.jp]
Sent: den 29 juli 2013 13:12
To: XMPP Summit
Cc: Peter Waher
Subject: Re: [Summit] XEP dependency graph



Oops. Sorry I mistakenly sent the email.



Output of script is attached. Anyone can make it over clone of xmpp repository of gitorious, in extensions directory.



Yusuke





(2013/07/30 2:06), Yusuke DOI wrote:

> (2013/07/30 1:07), Peter Waher wrote:

>> Hello

>>

>> Interesting info.

>>

>> I wonder if circular relationship graphs could be used to create a

>> better visual presentation of relationships between XEPs:

>> http://www.google.co.uk/search?q=Circular+Relationship+graph&hl=en&tb

>> m=isch&tbo=u&source=univ&sa=X&ei=U5L2Ufa3B8aZiAKQ4YGIAw&ved=0CDkQsAQ&

>> biw=1903&bih=918

>>

>>

>> Have you extracted the references between documents into an separate

>> document you could share? Perhaps a simple script can be used to plot

>> the information in a circular diagram.

>>

>> Best regards,

>> Peter Waher// Yusuke DOI <yusuke.doi at toshiba.co.jp<mailto:yusuke.doi at toshiba.co.jp>>





--

// Yusuke DOI <yusuke.doi at toshiba.co.jp<mailto:yusuke.doi at toshiba.co.jp>>



-----

No virus found in this message.

Checked by AVG - www.avg.com<http://www.avg.com>

Version: 2013.0.3349 / Virus Database: 3204/6513 - Release Date: 07/23/13
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/summit/attachments/20130730/35a9a675/attachment-0001.html>


More information about the Summit mailing list