Diagrams Alternatives

Similar projects and alternatives to diagrams

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better diagrams alternative or higher similarity.

Suggest an alternative to diagrams

diagrams reviews and mentions

Posts with mentions or reviews of diagrams. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-05-21.
  • Diagram / Smart art as code
    1 project | reddit.com/r/devops | 23 May 2022
    There’s also this that looks interesting, a Python DSL around Graphviz https://diagrams.mingrammer.com/
  • How can I document an AWS project?
    4 projects | reddit.com/r/aws | 21 May 2022
    I suggest Diagrams https://diagrams.mingrammer.com/. Is is a simple diagram as code tool using Python language to draw the diagrams. It is my go to for architecture diagrams. It is simple yet powerful.
  • What do you make your diagrams with?
    3 projects | reddit.com/r/homelab | 16 May 2022
    diagram as code https://diagrams.mingrammer.com/
  • Diagrams as code
    3 projects | reddit.com/r/selfhosted | 12 May 2022
    Curious to know if anyone else is doing diagrams as code and what you are using. I used mingrammer/diagrams to document my home setup and it is ok, but it is a tremendous amount of work IMHO to get it to look half way decent. Can't mix and match layouts in a single diagram (dot vs. neato), direction (TB vs. LR), doesn't alphabetize items in a group, etc. If you want to control exact layout for a particular section, you have to provide x,y coordinates of where to place each item. Can't just code it to display in a table of 3 rows by 3 columns.
  • Mermaid: Create diagrams and visualizations using text and code
    10 projects | news.ycombinator.com | 5 May 2022
    There are Go and Python packages for diagrams as well:

    https://diagrams.mingrammer.com/

  • Diagrams lets you draw the cloud system architecture in Python code
    1 project | news.ycombinator.com | 26 Apr 2022
  • Diagrams as Code
    1 project | news.ycombinator.com | 25 Apr 2022
  • What are you using to draw your topology?
    2 projects | reddit.com/r/homelab | 21 Apr 2022
  • Plaintext way to document a network?
    1 project | reddit.com/r/homelab | 12 Apr 2022
  • Code for the sake of code - Python-generated diagrams
    2 projects | reddit.com/r/homelab | 28 Mar 2022
    I am currently (slowly) learning Python, so I was looking for something easy to do with the language. Enter diagrams, which is a project to generate diagrams from Python.
  • Any open-source workflow designers?
    6 projects | reddit.com/r/selfhosted | 27 Mar 2022
    mingrammer?
  • Diagrams: Open-Source Alternative to Lucidchart
    9 projects | news.ycombinator.com | 23 Mar 2022
  • How do you document your setup and progress?
    3 projects | reddit.com/r/selfhosted | 15 Mar 2022
  • Ask HN: Where are all the cool architecture diagrams?
    3 projects | news.ycombinator.com | 14 Mar 2022
    I am on the hunt as well. This seems useful, not the prettiest but not the worst:

    https://diagrams.mingrammer.com

  • Ask HN: How to quickly animate sketches and 2D diagrams?
    8 projects | news.ycombinator.com | 10 Mar 2022
    It's interpreted line-by-line so that each line represents one state of the diagram. There are commands to delete nodes: when I delete a node I just remove it from its parent but leave it in the top-level state. That has the neat effect that if I re-add it, I get the node with all its descendents and connections restored in one step, which I can use to pre-diagram things I talk about often.

    After calculating the drawing state by applying all the commands from the start to the current selection, the next step is to limit this to the visible pieces. I make a copy of the drawing state, starting from the currently zoomed node and following all children. Then I add all connections, if all the 'to' ends of the connections are visible.

    Next, I do layout. Starting with the visible tree, annotate all nodes with positions of the box (if any), the icon, and the label. The diagrams I'm drawing are similar to those produced by AWS Perspective: https://aws.amazon.com/solutions/implementations/aws-perspec... , so if a node has no children I draw it as a large icon with a label below, if it has children, it is a box with a small icon to the top left, a centred label at the top. Each node can choose one of a small number of layouts that I can do automatically with just a list of children: 'ring' (a circle of nodes), 'row', 'column', or 'snake' (the default: alternate rtl-ltr rows to evenly fill the space; this will be a grid if that fits or could end up like 4-3-4-3 if it doesn't). In ring & snake, boxes are always 4:3; in row and column they are stretched to fit.

    Next, I do animation. I keep around the previous layed-out state, and use window.requestAnimationFrame to calculate the position of boxes between the start and end state. A box that is in both start and end states is moved, if it is only in start or end I fade it in or out as need be. This lets me animate between _any_ two states of the drawing, so I can talk about one bit of the diagram, then jump back and forth by clicking in the command window, and it smoothly animates between them. I found animating for just 0.5s worked best for interactivity; it's nice to see a slower move but it feels laggy when typing.

    I calculate arrow positions after calculating the final position of boxes and icons. I chose to use circular arcs, because you will never get an awkward situation where an arc lies directly along the edge of a box; straight things are always boxes, curvy things are always arrows. SVG wants two endpoints and a centre to draw these. So, I start with an arc between the centres of the two boxes, choose a radius twice as long as the distance between these points; then I calculate the intersection of the arc with the boxes, and use those two intersection points as the start/end of the arc. (this isn't that difficult, the formula for the arc is in the svg spec, and it's checking 4 straight lines, choose the intersection point closest to the other box). Like the boxes, the arrows fade in and out if they are not needed in one of the start or end states.

    All of this then just replaces the content of the svg. It's surprisingly smooth.

    One last detail is icons. I'm using the icons from mingrammer (https://github.com/mingrammer/diagrams/tree/master/resources), which gives me about 1600(!). Finding an icon _while you type_ is awkward and initially I had to drop to the shell to find the file I was going to refer to. I tried giving the drawing tool a mode that would let me visually pick the icon, but 1600 is too many. So I changed it to use a fuzzy search to find an appropriate icon: it looks for the icon where the sequence of characters appear in the shortest substring of the icon path: eg for 'ec2' it constructs the regex `.(e.?c.*?2)`, scoring the matching substring 'ec2' better than 'elastic2', and the shorter containing string 'aws/compute/ec2' better than eg 'aws/compute/ec2-rounded'. (I have a further round of preferences so that the top level aws iconset is preferred to eg the ibm one, which has terrible icons). This gives you an icon for almost anything you type, and encourages a more playful approach to picking the icon than the exact-match approach.

    There's a bit more to it, I also accept some markdown which fades from the diagram to slides with bullet points, then back to the diagram if the current command is a diagramming command. But the description above is most of it. I could probably have done this better with eg d3 to do the drawing but I am not a front end developer at all and the whole thing was more of a hack over a couple of weekends. I should clean it up a bit, but it works.

    I serve up pre-prepared pages with this js attached from github pages, I can walk through eg the flow of data clicking the down arrow to change the selection which causes it to animate to the next state which has the next arrow... and so on.

Stats

Basic diagrams repo stats
48
18,432
6.7
16 days ago

mingrammer/diagrams is an open source project licensed under MIT License which is an OSI approved license.

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
Find remote Python jobs at our new job board 99remotejobs.com. There is 1 new remote job listed recently.
Are you hiring? Post a new remote job listing for free.