[HN Gopher] Graphviz: Open-source graph visualization software ___________________________________________________________________ Graphviz: Open-source graph visualization software Author : davesailer Score : 287 points Date : 2022-01-17 13:02 UTC (9 hours ago) (HTM) web link (graphviz.org) (TXT) w3m dump (graphviz.org) | enter-haken wrote: | I use graphviz to get a quick postgresql schema overview (good | for small to medium databases) | | https://github.com/enter-haken/schema | kh1 wrote: | That looks really cool. Would you possibly share the script? | enter-haken wrote: | It's part of the repo. | | https://github.com/enter-haken/schema/blob/master/schema.sh | | It's a mixture of sed, awk and sql. | kh1 wrote: | Oh I did take a quick look at the repo but didn't notice it | was in the SQL. Thank you! | magicpointer wrote: | In a similar vein there is Schemaspy[1]. It generates a static | documentation website for your DB, which also uses GraphViz to | build ER diagrams. | | [1] https://github.com/schemaspy/schemaspy | TruffleLabs wrote: | I used this to generate relationship diagrams between companies, | adding in projects and who is working on what; the final image | was a map of an ecosystem of that set of businesses. | justsomehnguy wrote: | PSGraph is a PowerShell module to dynamically generate dot files. | | I used it (with a various degree of success) to plot some | diagrams for my personal usage. | | https://github.com/KevinMarquette/PSGraph | thangalin wrote: | My text editor, KeenWrite[0] renders Graphviz diagrams in near | real-time. KeenWrite extends the functionality a little by | allowing the use of variables inside the diagrams. In the example | diagram[1], the 350 value stems from a variable and its value is | shown near the top. | | [0]: https://github.com/DaveJarvis/keenwrite | | [1]: https://i.ibb.co/CVfsJDh/hacker-news.png | ngcc_hk wrote: | Javascript and html version needed. | 0x138d5 wrote: | Depending on what you're doing Cytoscape.js might also work. | | https://js.cytoscape.org/ | istillwritecode wrote: | I found cytoscape to be annoying because it assumes you are | using npm. | tunesmith wrote: | Not sure what you mean, you can install it other ways, and | the dist is packaged up in a variety of ways. | (https://github.com/cytoscape/cytoscape.js) | jdlshore wrote: | There's viz.js. I use it at objectplayground.com to visualize | JavaScript object layouts. This file shows how I use it: | | https://github.com/jamesshore/object_playground/blob/master/... | kjhughes wrote: | - Dagre (deprecated, unfortunately): https://github.com/dagrejs | | - Viz.js (via Emscripten): https://github.com/mdaines/viz.js; | Online demo: http://viz-js.com/ | AtNightWeCode wrote: | I think dagre was ok but oversold the quality of the algos it | used a bit. In many cases it can be better to use a SVG file | generated from Graphviz directly instead. | tunesmith wrote: | An alternative to dagre-d3 is d3-dag: | https://github.com/erikbrinkman/d3-dag | | I've had good success with cytoscapejs as well, integrating | with react so the graph will animate layout on transition. I | use elk, which is apparently superior to sugiyama (the | algorithm graphviz uses for force-directed dag layouts). | dylanowen wrote: | Viz.js had some hard coded memory limits last time I checked. | You can work around them on load, but it's annoying. | | Edit: GraphQL Voyager has the memory increase hack | https://github.com/APIs-guru/graphql- | voyager/blob/54a178142a... | dylanowen wrote: | https://github.com/hpcc-systems/hpcc-js-wasm was pretty easy to | integrate into my last project | RBerenguel wrote: | Agreed, I have a kind-of-live graphviz editor in a webpage, | with autocomplete and a few more things. Was fun to hack | together | nxpnsv wrote: | https://mermaid-js.github.io/mermaid/#/ | berkes wrote: | I used to generate most of my diagrams in PlantUML[0], but | recently found that my not-taking app, Joplin[1], has Mermaid | built in. | | PlantUML has the benefit that you can include it in your | builds, e.g. parse any .plantuml files in `make doc` or in | your CI. | | But I like Mermaid more: its easier to read, less quirky and | easily integratable in the markdown (or note-taking apps) | without the need for extra build steps. | | [0] https://plantuml.com/ [1] https://joplinapp.org/ | kasperset wrote: | One of my favorite applications in R that can make Graphviz | like plots: http://rich- | iannone.github.io/DiagrammeR/index.html | tonerow wrote: | Way fewer features but probably easier to use ~> | https://flowchart.fun | | Exports to SVG, PNG, JPG | pc86 wrote: | This looks cool and like a novel way to generate the graphs, | I'll have to take a look | ncc-erik wrote: | I maintain an open-source project [1] that uses graphs to model | data. I wanted to make my project as accessible as possible, so | Graphviz was perfect since it's dead-simple to install and use on | all major OS platforms. | | [1] https://github.com/nccgroup/PMapper | paphillips wrote: | I've used GraphViz a number of times and highly recommend it as a | standard tool on your belt. Having a stand-alone executable that | can export to SVG is great. | | The most complex thing I've done with it [1]: a tool (MIT- | license) that builds diagrams of the data and addressing pipeline | for a DSP processor, and lets one 'scrub through' the assembler | code frame by frame and see the values propagate through the | blocks. | | Also PlantUML [2] uses it for most diagrams. | | Getting layout and positioning the way you want can be tricky but | is usually achievable with patience and hidden objects. | | [1] https://github.com/paphillips/DFB [2] | https://plantuml.com/graphviz-dot | thrwawy283 wrote: | My graphviz-fu got so much better when I started using | invisible objects for the grid-like layouts. At that point | you're just using graphviz for positioning/spacing/styling | instead of creating the overall topology. | buzzwordninja wrote: | This sounds interesting, can you expand on that a bit please? | carlhjerpe wrote: | FRA, the Swedish government agency for radio communications posts | some riddles every year around Christmas. With one you got a | couple of phone call logs and were asked questions about who was | who in a terrorist group. | | Plotted the calls with graphviz and the questions were instantly | trivial to solve. Great tool with many applications. | phkahler wrote: | Always wanted a way to (have GCC?) send a call graph to graphviz. | A reduced version indicating calls across files would also be | useful. | | I get that polymorphism can mess that up, so maybe just link | callers to the base class in those cases. | leni536 wrote: | I remember being able to set that up with clang (obviously not | indirect calls). | bhaak wrote: | The history and majors relationships between NetHack and its | forks are visualized with graphviz. | | https://nethackwiki.com/wiki/Variant | nsajko wrote: | A fast interactive 3D alternative for visualizing large graphs is | Graphia: https://github.com/graphia-app/graphia | https://graphia.app However, it's currently suffering from the Qt | switch from 5 to 6. | | Regarding Graphviz itself, I wonder why is there no special | layout logic for planar graphs? They can be recognized and | embedded on the plane in linear time without intersecting edges, | so it would be very nice if some of the Graphviz tools actually | did that. | | A recent set of minimal graph coloring Graphviz visualizations of | mine: https://gitlab.com/nsajko/example_optimally_colored_graphs | tandav wrote: | btw python wrapper is awesome: | | https://graphviz.readthedocs.io | erwincoumans wrote: | Look nice a simple! Minor nit: I wish they could have added an | option to statically link graphviz/dot, so the pip install | became fully self contained. | franga2000 wrote: | The biggest thing that makes me keep going back to graphviz | despite there being nicer libraries available is that because it | uses a really simple markup language instead of code or complex | objects, I can juts put a handful of print/write statements into | any program I want to analyse and pipe it to graphviz to give me | nice graphical overview of what's going where. | | I've used it to visualise/debug everything from web scrapers in | Python to directory scanning in Bash to proper graph algorithms | in Java. Every time with no library installation or anything, | just simple prints to a stream/file and perhaps a system() call | at the end if I'm running it often enough. | l0b0 wrote: | Graphviz is one of my favourite tools, but I use it very rarely. | I noticed a mention of support for UTF-8 and some great | documentation layout improvements, but what are the other big | features that have been implemented in the last few years? | _joel wrote: | It's great to see it still going. Used it for Puppet as well as | dpkg output (we made a full dependency list of our multimedia | ingest application, i.e. lots of custom ffmpeg and libboost etc). | That thing was _huge_ | nyellin wrote: | Here are some cool things I've done recently with graphviz: | | 1. Draw "sketch" style graphs using https://sketchviz.com/new | | 2. Draw graphs of memory usage in golang programs (using pprof): | https://graphviz.org/Gallery/directed/pprof.html | | 3. Embed graphviz into Sphinx docs (shameless self-promotion: | https://docs.robusta.dev/master/catalog/triggers/index.html#...) | taubek wrote: | I like the output of Sketchviz. Do yo know if it is possible do | make such output directly from desktop app? | nyellin wrote: | Sadly I haven't found a way. Let me know if you do | taubek wrote: | Will do. | fsiefken wrote: | you can install it locally with docker | https://github.com/iamacarpet/sketchviz-docker | taubek wrote: | Thanks! Docker makes my computer so slow... And it would | probably be an over kill for me. But it is nice to know | that it exists. | erwincoumans wrote: | Sketchviz look great. Is there an option to export vector | graphics (for example svg)? | cldellow wrote: | If you hold down control, the "Download PNG" button becomes | "Download SVG". | | Super intuitive, I know! :) | erwincoumans wrote: | Haha, why is that feature hidden? Like the latest Tesla | Model 3 v11 update hides many features :-) | IAmEveryone wrote: | I once created a dataset of X-hooked-up-with-Y for my circle of | friends. About 50 nodes and a few hundred connections (after I | asked around a bit for additions). | | It became a wedding present for one rather central "node" with | the title "drosophila neural regulation network" or something | like it. No names, just lines and circles. It's still the | centerpiece in his home office. | erwincoumans wrote: | Very cool. About Sketchviz | | 1) is there an option to make the graph horizontal instead of | vertical? 2) can you make the svg option separate, instead of | hidden behind the PNG button (with CTRL key)? 3) how did you do | the handwriting style? | hun-nemethpeter wrote: | Yes, the name of this attribute is rankdir. | | See in the docs: https://graphviz.org/docs/attrs/rankdir/ | | In the sketch example: digraph G { | rankdir="LR"; graph [fontname = "Handlee"]; | ... | rajandatta wrote: | My single biggest issue with Graphic is that the quality of | Arrow end-points is very poor. They don't terminate cleanly at | the destination. This is visible in the 2nd link you've posted. | | I'm amazed that this hasn't been addressed. It's been there for | years. | | Makes the end products impracticable for distribution in a | professional setting. It's Ok if you're the only consumer ... | not great for other cases. | feanaro wrote: | I remember this issue being raised, I think on the graphviz | Discourse, and the graphviz developers responding to it as if | it was a hard to solve limitation of graphviz for some | reason. But I can't for the life of me remember the details. | pphysch wrote: | Ostensibly each arrow style graphic would need an | explicitly-defined "attach point" at whatever is deemed the | "tip", so that the tip can be oriented perfectly in | relation to the vertex and edge of the GraphViz graph. | | If nothing like that exists, I can see how it would be a | very troublesome refactor. | [deleted] | graphviz wrote: | Oh, that too. Feature interaction is a killer, isn't it. | graphviz wrote: | "Very poor" seems harsh, but, yes, it hurts us, too. (That, | and text with slightly-off baselines.) | | The relevant code starts around https://gitlab.com/graphviz | /graphviz/-/blob/main/lib/common/... If this isn't right, | maybe somebody can figure out why. Perhaps the loop stops | sometimes on the wrong side of the boundary? Anyway, it's | equally possible that when the endpoint coord is handed off | to a lower level driver, the arrowhead mitering is wrong. | There is no question there was once upon time explicit code | to try to cope with this problem, at least in the native | PSgen, but I can't find it now. Maybe it wore away as waves | of open source development washed over it, along with | static tables for a bunch of "standard" PS fonts. | | For more background, see for example | https://developer.mozilla.org/en- | US/docs/Web/SVG/Attribute/s... | | In the worst case, this has to be debugged for all the | drivers in | https://gitlab.com/graphviz/graphviz/-/tree/main/plugin | | No doubt there are more details if anyone can remember | them. | AceJohnny2 wrote: | The `gvpr` tool in graphviz deserves more recognition. | | Graphviz, at its core, is a simple graph description language | (DOT), which allows _progressive enhancement_ , and a bunch of | auto-layout tools where some double as renderers. | | The double-duty of the layout/renderers masks GraphViz's true | power, which is that you can create a pipeline modifying your | graph source (confusingly referred to as '.dot' files), | progressively adding attributes. | | This is where gvpr comes in. While most are familiar with GV's | all-in-one layout+rendering tools like `dot` or `neato`, gvpr is | a generic Awk-like programming tool that iterates over nodes and | edges. With it, you can implement any layout algorithm you like | (or not!), to specify part or all of the attributes of your graph | (like positioning and style), to then be rendered using `dot` to | the format of your choice. | AceJohnny2 wrote: | I'm actually disappointed that `gvpr` isn't mentioned at all on | GraphViz's main page, because I think it's its most powerful | tool. All I could find are manpages, and not even on GraphViz's | own website! | | https://manpages.debian.org/testing/graphviz/gvpr.1.en.html | steveroush wrote: | I second the GVPR praise. Pretty powerful. | mLuby wrote: | GraphViz is great, like Markdown. I recommend https://edotor.net | for online use: 1. No set-up, no | accounts/registration. 2. Free, no ads. 3. | Simple, pleasant UI with variable/keyword autocompletion and even | multi-cursor find/replace! 4. Your graph is saved in | the URL so sharing the link lets others play with a copy of your | graph. I usually link-shorten the URLs since they're long: | | https://bit.ly/edotor-example-1 https://bit.ly/edotor-example-2 | janto wrote: | https://plantuml.com graphs look much better | rwoerz wrote: | PlantUML depends on GraphViz (https://plantuml.com/en/graphviz- | dot) | mdtrooper wrote: | Graphviz is another "heart bleed" / "log4j" / ... | | Because a lot of big companies use it (and they spend 0 EUR/$/... | in the project), and it is broken from several years... | _joel wrote: | I'm failing to see a vector here? | lloydatkinson wrote: | Broken how? | graphviz wrote: | Author(s) here | | We do voluntarily act on CERT advisories. | | But, true. | ggerganov wrote: | For the ASCII lovers, I made this simple web page to help convert | dot to text diagrams: | | https://dot-to-ascii.ggerganov.com | | It's useful to embed diagrams directly in source code for | example. | | Here is a sample [0]: 0.6 | +-------------------------+ V | | +---+ 0.8 +---+ 0.1 +---+ 0.7 +---+ 0.2 +---+ | | d | -----> | | <----- | e | -----> | a | -----> | b | | +---+ | c | +---+ +---+ +---+ | | | 0.4 | | | | <----------------------------------+ +---+ | | And a more complex example from a project of mine [1]: | +-------------+ | @tweet2doom | | | | | ROOT | <-----+ +-------------+ | ^ | | | | | | | +-------------+ +-----------------+ | @player1 | | | @player2 | | | | | | | /play 50-u | | /play 30-l,50-f | +-------------+ | +-----------------+ ^ ^ | | | | | +-------------+ | +-----------------+ | @tweet2doom | | @tweet2doom | | | | | | | Video | | | Video | | | | | | | Start: 1 | | Start: 1 | | End:50 | | | End:80 | +-------------+ +-----------------+ | ^ | | | +-------------+ +-----------------+ | @tweet2doom | | | | | | | @player2 | | | Video | | | | | | | /play 30-l | | Start: 80 | | | | | End:110 | --> | | +-------------+ | +-----------------+ | | [0] https://dot-to-ascii.ggerganov.com/?src_hash=476410d3 | | [1] https://dot-to-ascii.ggerganov.com/?src_hash=1ee7dcfe | cjlm wrote: | I love this and wrote about it in my newsletter on network | thinking [0] - thank you! | | [0] https://sourcetarget.email/editions/17/ | Godel_unicode wrote: | If you're on mobile you're going to want to rotate your phone. | benreesman wrote: | This is so friggin cool. | | I would kill to have this as like a Python library or | something, any chance you'd open-source it? | | Or is there a GitHub link already and I overlooked it? | | Either way great job. | tptacek wrote: | This is fantastic. | karlicoss wrote: | Graphviz is awesome! | | Here are a couple of my diagrams: | | https://beepb00p.xyz/blog-graph.html -- graph of my blog pages | with tags/connections between posts, generated with a DSL-ish | python script | https://github.com/karlicoss/beepb00p/blob/master/misc/index... | | https://beepb00p.xyz/myinfra.html -- map of my personal data & | infrastructure (discussed a year ago | https://news.ycombinator.com/item?id=26269832 ). Also a similar | DSL https://github.com/karlicoss/myinfra/blob/master/generate.py | | The main downside for me is that sometimes it gets the | positioning wrong, and you can see how it can be easily fixed, | but it's hard to convince graphviz to actually do so. Basically | I'd love a tool where I can do 10% of positioning manually and | let the rest be constraint based like in graphviz. | taeric wrote: | It used to have a built in tool to move nodes it has placed. | All I can find scanning the docs right now is the -n flag to | neato, which will honor existing pos fields. | | Edit: dotty is what I was trying to remember. | dylanowen wrote: | Graphviz is one of my favorite tools. I use it for most of my | diagraming https://github.com/dylanowen/mdbook-graphviz and I use | it as debugging output when I'm working through graph problems. | Thiez wrote: | Likewise! I have used it to easily visualize dependency graphs | at multiple employers. The pictures can get a bit messy when | they're very large, but they were amazing for detecting | incorrect/missing dependencies. | dang wrote: | Past related threads: | | _How Graphviz thinks the USA is laid out_ - | https://news.ycombinator.com/item?id=25611053 - Jan 2021 (80 | comments) | | _Create diagrams with code using Graphviz_ - | https://news.ycombinator.com/item?id=23475225 - June 2020 (211 | comments) | | _Graphviz - Graph Visualization Software_ - | https://news.ycombinator.com/item?id=18797932 - Dec 2018 (3 | comments) | | _Show HN: Project Management as Code with Graphviz_ - | https://news.ycombinator.com/item?id=15950325 - Dec 2017 (64 | comments) | | _A Quick Introduction to Graphviz_ - | https://news.ycombinator.com/item?id=15324883 - Sept 2017 (44 | comments) | | _A Technique for Drawing Directed Graphs (1993) [pdf]_ - | https://news.ycombinator.com/item?id=14568180 - June 2017 (11 | comments) | | _What happened to GraphViz?_ - | https://news.ycombinator.com/item?id=11265188 - March 2016 (2 | comments) | | _Ask HN: What is your favorite application of Graphviz?_ - | https://news.ycombinator.com/item?id=790668 - Aug 2009 (8 | comments) | | There have been others, of course, but these seem to be the ones | most focused on Graphviz itself. | aaronax wrote: | Graphviz was excellent for documenting my sailboat's electrical, | plumbing, and data networks: | https://github.com/aaronaxvig/hunter-376-docs | | Odds are slim that its future owner will have the skills to work | with such a resource. But I did leave a couple printouts on the | boat before leaving it! | srinathkrishna wrote: | I've long marveled on of my ex-colleagues graphviz-fu. He'd whip | out a new graphviz online doc and explain an architecture through | it. Helped a ton during the pandemic as we were all remote. | graphviz wrote: | Author(s) here. Ask us anything. | dzyanis wrote: | I used it for visualization on my project | https://github.com/srce/roadmap/blob/master/stacks/java/data... | | _.XML - > Python script -> _.DOT -> Graphviz -> *.SVG | | It's very useful and probably the best example of using DOT | language, unfortunately. | steveroush wrote: | If you have Graphviz "how do I do..." questions, try the forum | (https://forum.graphviz.org/) or stackoverflow | (https://stackoverflow.com/). If you have bug fix or enhancement | requests, try | https://gitlab.com/graphviz/graphviz/-/issues?scope=all&stat... | erwincoumans wrote: | I love the Doxygen dependency graphs, using dot/Graphviz. Wow, | 1999, 23 years old, like the first Matrix movie... | jonstewart wrote: | My team uses a succinct graphviz dot file to note the | dependencies between different git repositories. This is then | used by the build system to figure out what needs to be rebuilt. | There are lots of other ways to skin this cat, this is just the | method we chose, and it's oddly pleasing. | undershirt wrote: | Did anyone see the new pathing algorithm for connecting graph | nodes that made some rounds on twitter? It looked way better than | a normal force-directed graph. I can't remember what it was | exactly, and have lost the reference, but it was a side effect of | solving what looked like a traffic problem. | inciampati wrote: | Stochastic gradient descent optimization of the layout based on | distances in walks in the graph? | pydry wrote: | Anybody know what the best visual editor is? Web or desktop. | skewbone wrote: | Graphviz ships with a tool called dotty that can be used for | visual graph editing. It's a bit cumbersome but does work. | | https://www.graphviz.org/pdf/dottyguide.pdf | | Edit: I don't know of a really good visual tool as I've found | text editing .dot files directly with a live visualization | pretty nice. I use graphviz pretty regularly. | omegote wrote: | I've used Graphviz for many years and my main gripe with it is | the lack of customization. Yes, there's "some" customization, but | there's a point (not too far from the initial style) where, if | you don't like the output, you're out of luck and might as well | redraw it using draw.io or some other WYSIWYG editor. | lmeyerov wrote: | Graph viz is admirably powerful, even here. The main techniques | seem to be invisible objects and custom code, in case that | helps. The cassowary solver group in Australia (I'm blanking on | the university, Monash?) goes further via custom constraint | logic, and I believe iOS layouts were deeply inspired, and | maybe even had one of their students. | | Graph technologies are tricky to build up -- you can go deep in | many areas like this. Afaict, AT&T/Bell Research used to be the | main developers of graphviz, and when that corporate lab | thinned out, so did graph viz development. A similar story | happened with gephi devs when they left their universities (was | popular in social data), and cytoscape (popular in bio) is | still largely at that fragile state. | | We are historically big contributors to OSS at Graphistry, but | saw the history of funding issues in this space, and how each | tool reached a frustratingly low ceiling due to it. We decided | to not start as open core, and instead made a free GPU tier + | release individual pieces as OSS (Apache Arrow's JS tier, etc) | + initially charge for GPU code, until we could build + grow | more commercially targeted parts. Thankfully, we are getting to | the point of enough sustainable revenue that we are pushing | much more to our OSS libs now, and one of our OSS pushes for | 2022 will be moving custom (GPU-accelerated) traditional | layouts & AI layouts to the OSS lib pygraphistry :) A request | we get often get for pygraphistry and our file uploader UI is | dotfile (and graphml/gexf) conversion/ingest for then | viewing+editing in our scalable interactive graph renderer, so | we have been thinking of adding a pygraphistry example just to | demonstrate the OSS flow! | technimad wrote: | Many moons ago I created all graphs in the LPIC2 exam prep book | [1] using graphviz. The book is open sourced now, and all dot | files are preserved in the accompanying repo [2]. | | One thing I learned creating these graphs was that with some | tinkering you have quite a lot of control on how the result will | look, without littering the semantic in the source file with a | lot of markup. | | I choose graphviz because the dot notation can easily be checked | into source control. It is also easy to create reproducible | results using a makefile. | | [1] https://lpic2book.github.io/src/ | | [2] https://github.com/lpic2book/src/tree/main/docs/images | GuB-42 wrote: | One of my favorite applications of graphviz | https://anidb.net/anime/715/relation/graph | | It is a great tool to have, it makes drawing complex diagrams | manageable. | tokumei wrote: | Graphviz has really helped me in the past with troubleshooting | giant CMake projects with lots of dependencies. | graderjs wrote: | I used Graphviz years ago to generate diagrams for NLP | structures, and other visualizations. It was the only thing that | could do what I needed. I ended up moving to Processing/P5 to | create "spring physics" interactive graphs, then wrote my own | eigenvector embedding visualization that could project into 3D | space and had a moveable camera so you could fly around with WASD | and mouse. Cool stuff! Graph visualization and 3d graphics was a | fun rabbit hole | happylion0801 wrote: | Do you happen to have any open source code for this that I | could look at. I am looking to do some interactive graph viz | and would love to see if there is something I could reference | graderjs wrote: | Sure. Let me look it up. It should be all here, at my | OpenProcessing (at least all the code I wrote for myself | personally): | | https://openprocessing.org/user/15252?view=sketches | | Basically any sketch that has "3d" or "aspekt" in the title | is on that track. But you can also see from the thumbnail | many of them are 3d world related. The navigation of that | site is pretty tricky...but you can find the source code by: | | - Click on a sketch | | - Click on the 'abacus' control menu to the right | | - Click on the files tab in that | | Source code in Java should be available there. | | Please remember it requires a version of Processing in Java | to work. I worked on this in 2011/2012 so you may need to | figure out which Processing version that is. | | Also, here's a youtube video of flying around one of my | sketches: | | https://www.youtube.com/watch?v=lNshrYO7Kf4 | | and here are some more videos: | | https://www.youtube.com/channel/UCw-6wNeif6-l7oqippdORcw | happylion0801 wrote: | Thank you, those look really nice, appreciate the links :). | I have used processing before so atleast some of it should | be familiar. | tepitoperrito wrote: | If you use Django, installing django-extensions[0] will add a | management command to produce a "dot" file for the apps/models of | your choice[1]. | | It's pretty handy to get a rough overview of a new project or to | use in docs. | | [0] https://github.com/django-extensions/django-extensions | | [1] https://django- | extensions.readthedocs.io/en/latest/graph_mod... | | Edit: typo | dddddaviddddd wrote: | Graphviz made it really easy for me to plot dependencies in Go | data structures! After I put together a lexer, Graphviz took care | of all the difficult work of making sense of the data: | https://github.com/davidschlachter/embedded-struct-visualize... | indentit wrote: | I've never been that happy with the output from any of the | different graphviz engines. I'd like to see a UI graph editing | tool which can import and export .dot format, but also allows | manually moving nodes (which I guess wouldn't get exported unless | arbitrary metadata is supported), and ofc exports to svg. Maybe | there's already something similar I haven't stumbled across yet? | | I guess my use case is mainly swimlanes and places where nodes | don't have to have the same rank. | steveroush wrote: | Look at the group attribute, it can help with vertical (off- | rank) alignment | nyellin wrote: | Totally agree with this. I always want to start with graphviz | but then modify the output afterwards to fix the layout | taeric wrote: | I mentioned this in another thread. You can have the output | be a dot file. Which you can then edit and send back with a | flag to not redo the layout. | nyellin wrote: | That's a wonderful tip, thank you! | taeric wrote: | Hope it helps! There used to be a program called dotty, | looks like it was basically abandoned, though. :( | AtNightWeCode wrote: | A true classic! Powerful, yet very easy to learn. | motohagiography wrote: | Graphviz is an amazing tool, it has just suffered from being | cloistered to technologists whose jobs aren't to solve the kinds | of problems it is specifically adapted for. I use graphs in | security and privacy quite a bit, and even built the tech for a | hopeful security platform using a graph back end. They yield the | fastest path through complex problems, and I use them to do in a | couple of hours what typically would take client staff months. | | They're really compelling but oddly unpopular. | | Imo, they're useful for one-off pattern discovery, and they're | most valuable for finding single or a few exceptions and outliers | in normalized data, and you need to be in an environment where | there are asymmetric returns on finding those. Surveillance seems | to be their default use case, with open ended scientific research | a close second. This comes up with graph based recommendation | engines, which are essentially a surveillance/marketing product | based on preferences. Most businesses aren't based on discovery | of anything other than customers for a transaction they already | have. | | These aren't problems engineers typically solve, which are more | about scaling and optimizing, they're more marketing and sales | problems, where you're looking for exceptions and opportunities. | (security and privacy are the complementary antithesis of these) | A graph based product (imo) is ideal for product marketing | analysts optimizing for customer preferences and discovery. | | From a product perspective, graphs are analogous to ML, where | you'd use a clustering algorithm on loosely structured data to | yield categories, comparisons, and implied relationships, whereas | a graph yields the same thing over the structured normalized data | you can feed into it once you have imagined an ontology to fit | it. | lizen_one wrote: | That sounds really interesting! Can you give a few more details | how you use Graphviz? How does it give such a great advantage | "to do in a couple of hours what typically would take client | staff months." | | Did I understand it correctly that you use it to discover | patterns? Are these patterns discovered by just using the | layout engines? Arent' other tools, e.g. networkx in Python or | cytoscape in javascript easier to use interactively in a REPL? | What is the typical workflow (maybe plot, find interesting | pattern, change query/data in a loop)? | | I'm really interested in how Graphviz can be so great. I am | currently working with the other mentioned tools for | visualization purposes. | motohagiography wrote: | Really simply, I typically use Neo4j, but if I have flat | homegenous data, I just use Graphviz because the dot markup | format lends itself to parsing easily in awk command lines. | The times I have used networkx was when I needed a graph | abstraction layer to reason about another graph query, so | networkx wasn't used as a persistent graph store, but more of | an intermediate data structure for orchestrating multiple | service and api calls, like a low rent graphql. I'm a crap | developer, but the graphs were what i needed to piece the | logic together coherently. | | One example of clients taking months is mapping | counterparties to agreements. Let's say you have inherited a | division that has file share full of contracts and you want | to understand the line of business. You get the | counterparties out of the contracts and find all the paths | for obligations between entities within the division and | their counterparties. The graphviz/dot layout gives you a map | of all those parties in a single slide and shows clusters, | instead of a 3 lb. document with a paragraph for each of them | that would have cost a massive amount of consulting time, or | interviewing several people to get their narrative | understanding of how the business worked, the graph provides | an objective map. You could just use D3js, but for me the dot | markup was faster on the command line than structuring json. | | The idea is if you can formulate a conceptual, narrative | ontology of an organization, you can create a grammar of | things and relationships, and then you can plug data | (contract counterparties) into that model and form a fairly | complete map. | | Another recent use case was enterprise vulnerability scan | data over a very full /16 address block, allocated across | multiple divisions under different management hierarchies | with thousands of hosts. By linking the host ownership data | to projects and an org chart with the types of | vulnerabilities, I could demonstrate in a couple of slides | what the highest impact patching strategy would be. Again, | graphviz for sketching up the ontology, then Neo to do the | lifting. | | On a much simpler scale that was more graphviz/dot oriented, | I did some work for a startup where I worked with the | executive team who had acquired a codebase and talent, and | created an ontology of their pipeline customers, their stated | needs, implied product features, platform dependencies, our | service interfaces, their code bases, and demonstrated the | flow of how work on the code bases flowed through to impact | revenue. This ultimately got represented as a Sankey diagram, | but it was graphviz/dot I used to sketch up the initial | ontology. | jcims wrote: | Have you tried gephi? It's not exactly an alternative to | graphviz (eg. you can't cluster nodes) but it handles much | larger graphs and has a bit more flexibility in layout. It | has plugins for both dot and neo4j input. | | Graphs and infosec go very well together. | SavantIdiot wrote: | I found the learning curve to be quite steep with few examples | of graphs that looked well-designed. By default, large graphs | look like crap because engineers designed it, not designers (it | takes both!). | | However, that was back in the late 90's. Now the internet has | many examples of better looking layouts, but it is still | disappointing that they don't look ... designed? | | But integration and automation are great. Like GNUPlot, which | I've used for decades because it is so easy to automate once | you learn how to make plots look better than the default. | | GStreamer uses DOT output by default. But any reasonably sized | pipeline is almost impossible to read without excessive | zooming. But it gets the job done. | soheil wrote: | At what point does one say maybe a static svg isn't the right way | to display that much complexity [0]? | | [0] https://graphviz.org/Gallery/twopi/twopi2.svg | mbostock wrote: | I love Graphviz! It's in the Observable standard library as the | dot tagged template literal, powered by Viz.js. | | https://observablehq.com/@observablehq/dot | | Here's a recent example where I used it to figure out why certain | dependencies are in my node_modules: | | https://twitter.com/mbostock/status/1479693504511053824 | jahewson wrote: | Is there a fork of viz.js that's still maintained? The original | was abandoned in 2018. | JohnHaugeland wrote: | no. | | two steps above the abandoned version, before the web threads | attempt, works quite nicely. | funstuff007 wrote: | two commits previous or two releases previous to final | version? | shiryel wrote: | I love using Graphviz to document projects, because its just a | text file that I can keep with the project on git. | | I also used it to make a small tool to generate the relationships | of Elixir's modules: https://github.com/shiryel/graphme ___________________________________________________________________ (page generated 2022-01-17 23:00 UTC)