Plot Sigmas
See what your scheduler actually does instead of guessing
- sigmas
- sigmas2
- image
Every generation you run is secretly a sigma schedule. The sampler gets a list of noise levels, walks down it one step at a time, and the shape of that list - not just the sampler name - decides where your denoising effort goes. You can never see it. That's why people paste raw sigma arrays into chat windows and ask an LLM what their scheduler is doing. Plot Sigmas just draws the thing.
It's a one-input, one-output node from ComfyUI_Hangover-Utils by Hangover3832 (the author's been shipping ComfyUI utility nodes since the 2024 Moondream/interrogator days, and this pack "fully replaces" their older Hangover nodes). Feed it a SIGMAS, get back a 1024×512 chart of sigma against step index, with a dot at every step.
What it's for
Three things, roughly in order of usefulness:
- Sanity-checking a hand-built schedule. The pack also ships
Hangover Sigmas Function, which lets you type an expression for your noise curve. Plot it before you burn five minutes of sampling on a curve that plateaus and wastes its last four steps. - Seeing which steps do nothing. A schedule that's flat over its final third is four steps you paid for and didn't get. A schedule that drops like a cliff at the end is a different animal entirely. You cannot feel this from the output image, you can see it here.
- Learning what the stock schedulers do. It takes any
SIGMAS, not just the pack's, so wire a stockBasicSchedulerin and look at the y-axis - SD 1.5/SDXL schedules start around 14.6, flow-matching models (Flux, SD3, Qwen, Z-Image) start at 1.0.
How it works
sigmas comes in, gets flattened to a plain list, and matplotlib draws it on a Figure with an Agg canvas - deliberately not through pyplot, so there's no global figure state and it plays fine with ComfyUI's server thread. X axis is step, Y axis is the sigma value, and each sample gets a marker, so you can count your steps off the graph. The rendered buffer is turned into a float RGB tensor in the normal ComfyUI 0–1 image range.
It's registered as an output node and attaches a preview, which means it renders as soon as you queue even with nothing wired downstream. That's the intended use: drop it on the end of a schedule wire like a probe.
- Input:
sigmas(SIGMAS) - fromBasicScheduler,Sigmas Function,SplitSigmas, a Karras chain, whatever. - Output:
image(IMAGE) - the chart. Wire it toSaveImageif you want a record, or just read the preview.
One schedule per node, so comparing cosine against Karras means two Plot nodes side by side, not one overlay. Fine, just know it going in.
Install
Via Manager: search ComfyUI_Hangover-Utils, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Hangover3832/ComfyUI_Hangover-Utils
pip install -r ComfyUI_Hangover-Utils/requirements.txt
That second line matters, and the README doesn't mention it. The pack's requirements.txt is numpy, sympy, pillow, pillow-avif-plugin, pyperclipimg, pyperclip, matplotlib, and these two sigma nodes share a module that imports sympy and matplotlib at the top. So a missing matplotlib doesn't just kill the plot - __init__.py imports that module unconditionally, so the entire pack disappears from the node list (wildcards, Sympy Math Interpreter, Make Inpainting Model, all of it). Manager will handle it; a bare git clone won't.
Also: this pack is written against ComfyUI's newer backend node API (from comfy_api.latest import ..., ComfyExtension, comfy_entrypoint). It's not broken and it's not a fork - it's just new. If your ComfyUI install is months behind, you'll get import errors at startup and no Hangover nodes at all; update ComfyUI first.
Gotchas
- Blank or "missing nodes" after install → almost always the dependencies above. Check the ComfyUI console for the ImportError on
Hangover-Utils. - Alarming y-axis. A stock SDXL schedule plots 14.6 → 0, not 1 → 0. Don't "fix" it; that's what the model wants.
- The right Python. matplotlib has to be importable in the same interpreter that runs ComfyUI; a sneaky second install is a classic cause of "why is it still missing".
- The pack is self-declared work-in-progress and developed on Windows. It's a small, low-traffic pack: expect the author's own README to lag the code (it already does on dependencies), and trust the source when they disagree.
Worth installing for? On its own it changes nothing about your images. Paired with a custom schedule node it's the difference between tuning a curve and superstition, and it's the cheapest way to answer "why does Karras look different at 20 steps."
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas | SIGMAS | — | |
| sigmas2opt | SIGMAS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |