Help with .dot code for Graphviz

  • Context: Python 
  • Thread starter Thread starter UFSJ
  • Start date Start date
  • Tags Tags
    Code
Click For Summary
SUMMARY

This discussion focuses on creating a network graph using Graphviz's DOT language, specifically for a dataset of approximately 1500 nodes with geographic coordinates. The user seeks to represent nodes as small black circles without labels, connected by thin edges. The conversation highlights the use of Graphviz alongside Python modules like NetworkX and Basemap for enhanced visualization, while also addressing the challenges of automating the generation of DOT files for large datasets. Additionally, it suggests combining Graphviz output with map images using ImageMagick for better contextual representation.

PREREQUISITES
  • Familiarity with Graphviz DOT language
  • Understanding of Python, specifically NetworkX and Basemap libraries
  • Basic knowledge of geographic coordinate systems
  • Experience with ImageMagick for image manipulation
NEXT STEPS
  • Explore advanced Graphviz features for node and edge customization
  • Learn how to automate DOT file generation using Python scripts
  • Investigate the integration of Graphviz with mapping tools for enhanced visualizations
  • Study ImageMagick commands for overlaying graphs on map images
USEFUL FOR

This discussion is beneficial for data scientists, software developers, and researchers interested in visualizing complex networks, particularly those working with geographic data and seeking efficient methods to automate graph generation.

UFSJ
Messages
13
Reaction score
2
Hi guys!

I'm completely new with dot code to make graph by graphviz and I'm calling by any help. I would like to make a network of, approximately, 1500 nodes, with each node with its position (geographic coordinate) and its own group of bounded nodes. Some nodes have the same position. These nodes may be represented by points with negligible size and bounded by edges represented by thin lines. I would like to obtain some thing like this: https://tuangauss.github.io/projects/networkx_basemap/networkx_basemap.html , but with an unique size for the circle nodes (smaller than the shown picture), with unique color (black) and without label. Below, I let my code with a reduced number of nodes (just 10 nodes).

[CODE lang="python" title="My code:"]strict graph {
node [shape = circle size=0.1];
1 [pos="-61.9961281,-11.9296913!"];
2 [pos="-63.0330696,-9.90765190!"];
3 [pos="-63.0330696,-9.90765190!"];
4 [pos="-61.4420509,-11.4333000!"];
5 [pos="-61.4420509,-11.4333000!"];
6 [pos="-60.8168373,-13.1869869!"];
7 [pos="-60.5454292,-13.1174307!"];
8 [pos="-64.2279739,-12.4367161!"];
9 [pos="-61.0130920,-11.5321751!"];
10 [pos="-65.3327789,-10.7804241!"];
1 -- 4 ;
1 -- 8 ;
1 -- 9 ;
2 -- 3 ;
2 -- 4 ;
2 -- 6 ;
2 -- 7 ;
2 -- 9 ;
2 -- 10 ;
3 -- 4 ;
3 -- 6 ;
3 -- 7 ;
3 -- 10 ;
4 -- 6 ;
4 -- 8 ;
4 -- 9 ;
4 -- 10 ;
6 -- 7 ;
6 -- 9 ;
6 -- 10 ;
7 -- 10 ;
8 -- 9 ;
}[/CODE]

I thanks a lot by any kind of help.
 
Technology news on Phys.org
Well that image uses the Python modules Networx and Basemap, but yoy can do this in graphviz too. The graphviz documentation is not easy to follow and it is always easier to start with something close and amend it. Something like this (follow link for demo)?

[CODE lang="python"]
# Using neato engine.

graph {
graph [bgcolor=lightgray]

# Default node styles.
node [style=filled label="" shape=circle width=0.5]

# Nodes.
a [width="1" fillcolor="red" pos="0.5,1!" label="⌂"]
b [fillcolor="blue" pos="0,3!"]
c [width=0 pos="3,1.5!"]
d [fillcolor="orange" pos="-1,0!"]

# Edges.
a -- b
a -- c
a -- d
}
[/CODE]
 
Is it acceptable to make a diagram without the map, but with locations that you can use photoshop to overlay the graph on a map, or do you want a completely automated program? I think that the first option would not be too hard, but an automated program with a map might require a different tool than Graphviz.
With so many nodes, the first option would require a program (Perl, Python, etc.) with the logic to generate a .dot file with the desired commands. The second option might require using a different tool as discussed here.
 
The OP is working in linux (see another thread) and it is a simple matter to combine the graphviz output with a map image using imagemagic's composite command in a script.
 
  • Like
Likes   Reactions: FactChecker

Similar threads

  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 11 ·
Replies
11
Views
2K
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 31 ·
2
Replies
31
Views
7K
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K