Skip to content

Euler diagram

#page#markdown#link#component#diagram#gfm#code-fences#obsidian

aka: Venn diagram

Above Euler diagram of tags on this website. It’s not a static picture - it’s generated based on the content everytime website is updated.

Installation

  1. Install dependencies

    Terminal window
    pnpm add venn-isomorphic
  2. Create EulerDiagram component

    src/components/EulerDiagram.astro
    ---
    import { createVennRenderer, type ISetOverlap } from "venn-isomorphic";
    interface Props {
    items: ISetOverlap[];
    }
    const items = Astro.props.items;
    const renderer = createVennRenderer();
    const results = await renderer([items]);
    const [result] = results;
    let svg =
    result.status == "fulfilled" ? result.value.svg : String(result.reason);
    ---
    <figure class="euler not-content beoe">
    <Fragment set:html={svg} />
    </figure>
  3. Use component, wherever you like

Theory

Further improvements

  • Implement area-proportional diagram. Maybe edeap.
  • Try to implement it without headless browser