a three component venn diagram in css
from nbconvert_a11y.t import get_table, Config
 
Series("""0 0
3 4
6 0""".splitlines()).apply(str.split).series().astype(int).pipe(
    lambda df: df - df.mean()
).rename(columns=dict(zip(range(2), "xy"))).pipe(
    get_table, id="venn"
)
 
| 
    0
    | 
    -3.00
    | 
    -1.33
    | 
| 
    1
    | 
    0.00
    | 
    2.67
    | 
| 
    2
    | 
    3.00
    | 
    -1.33
    | 
| 
    index 1
    | 
    x
    | 
    y
    | 
| 
    index 1
    | 
    x
    | 
    y
    | 
| 
    min
    | 
    0.00
    | 
    -3.00
    | 
| 
    max
    | 
    2.00
    | 
    3.00
    | 
 
%%
```css
.jp-RenderedHTML:has(#venn){
    overflow: hidden;
}
#venn {
    --w: 200px;
    --h: 200px;
    top: -75%;
    display: block;
    position: relative;
    height: var(--h);
    width: var(--w);
    margin: 50px;
    tbody:first-of-type{
        display: block;
        height: 1000px; width: var(--w);
        tr {
            --dy: calc(var(--y-max) - var(--y-min));
            --dx: calc(var(--x-max) - var(--x-min));
            --mul: 2;
            --y-frac: calc((var(--y) - var(--y-min)) / var(--dy));
            --x-frac: calc((var(--x) - var(--x-min)) / var(--dx));
            display: block;
            position: absolute;
            top: calc(var(--y-frac) * 100%);
            left: calc(var(--x-frac) * 100%);
            border: 20px solid red;
            border-radius: 100%;
            width: calc(var(--mul) * var(--w));
            height: calc(var(--mul) * var(--w));
            background: none;
            td{}
        }
    }
}
```