While researching on protein interaction networks it is often important to illustrate networks. For this many different tools are available, for example, Python’s NetworkX and Matlab, that allow the export of figures as pixelated images or vector graphics. Usually, these figures are then incorporated in the papers, which are commonly written in LaTeX. In this post, I want to present `tikz-network’, which is a novel tool to code and illustrate networks directly in LaTeX.
To create an illustration you define the network’s nodes with their positions and edges between these nodes. An example of a simple network is
\begin{tikzpicture} \Vertex[color = blue]{A} \Vertex[x=3,y=1,color=red]{B} \Vertex[x=0,y=2,color=orange]{C} \Edge[lw=5pt](A)(B) \Edge[lw=3pt,bend=15,Direct](A)(C) \end{tikzpicture}
The illustrations can be much more complex and allow dashed lines, opacity, and many other features. Importantly, the properties do not need to be specified in the LaTeX file itself but can also be saved in an external file and imported with the \Vertices{data/vertices.csv}
command. This allows the representation of more complex networks, for example the multilayer network below is created from the two files, the first representing the nodes
id, x, y ,size, color,opacity,label,layer A, 0, 0, .4 , green, .9 , a , 1 B, 1, .7, .6 , , .5 , b , 1 C, 2, 1, .8 ,orange, .3 , c , 1 D, 2, 0, .5 , red, .7 , d , 2 E,.2,1.5, .5 , gray, , e , 1 F,.1, .5, .7 , blue, .3 , f , 2 G, 2, 1, .4 , cyan, .7 , g , 2 H, 1, 1, .4 ,yellow, .7 , h , 2
and the second having the edge information:
u,v,label,lw,color ,opacity,bend,Direct A,B, ab ,.5,red , 1 , 30,false B,C, bc ,.7,blue , 1 , -60,false A,E, ae , 1,green , 1 , 45,true C,E, ce , 2,orange, 1 , 0,false A,A, aa ,.3,black , .5 , 75,false C,G, cg , 1,blue , .5 , 0,false E,H, eh , 1,gray , .5 , 0,false F,A, fa ,.7,red , .7 , 0,true D,F, df ,.7,cyan , 1 , 30,true F,H, fh ,.7,purple, 1 , 60,false D,G, dg ,.7,blue , .7 , 60,false
For details, please see the extensive manual on the GitHub page of the project. It is a very new project and I only started using it but I like it so far for a couple of reasons:
- it is easy to use, especially for small example graphs
- the multilayer functionality is very convenient
- included texts are automatically in the correct size and font with the rest of the LaTeX document
- it can be combined with regular tikz commands to create more complex illustrations