Skip to content

Instantly share code, notes, and snippets.

@Glavin001
Created October 13, 2023 05:42
Show Gist options
  • Save Glavin001/89211a2c16b2ab0857f587f59600ad38 to your computer and use it in GitHub Desktop.
Save Glavin001/89211a2c16b2ab0857f587f59600ad38 to your computer and use it in GitHub Desktop.
Render Mermaid.js diagrams in a Jupyter/IPython Notebook

Usage

renderMermaid('graph TB\na-->b')

Output

graph TB
a-->b
Loading
from IPython.display import display, HTML
import random
import json
def renderMermaid(graphDefinition: str):
elementId = "viz-" + str(random.randint(0, 1000000000))
# Render the Mermaid string
display(HTML(f"""
<div id="{elementId}">Loading...</div>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({{ startOnLoad: false }});
const drawDiagram = async function () {{
const element = document.querySelector("#{elementId}");
const graphDefinition = {json.dumps(graphDefinition)};
const {{ svg }} = await mermaid.render("{elementId}-viz", graphDefinition);
element.innerHTML = svg;
}};
await drawDiagram();
</script>
"""))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment