Graph Sigmas
Graph Sigmas Makes Schedules Visible
- sigma_1
- IMAGE_1
Here's a frustrating ComfyUI moment: someone shares a workflow, you peek at the KSampler, and it says sigmas is connected - but to what, and what does that curve actually look like? Schedules are just a list of numbers hiding behind a wire, and you can't tell by looking whether one is Karras-shaped or a flat line. Graph Sigmas is the answer: you feed it a SIGMAS schedule and it renders the curve as an image, right in your graph, no extra tools. It's the "show your work" node of the crom8505/ComfyUI-Dynamic-Sigmas pack - a small utility that pairs with its sibling Dynamic Sigma Scheduler but works with any schedule you can find.
How it works
The mechanism is delightfully simple. It's a Python node that takes each incoming SIGMAS tensor and plots it with matplotlib: step number on the x-axis, sigma value on the y-axis, points marked and the area under the line filled in. Then it exports that plot as a PNG and hands it back as an IMAGE tensor - so the picture appears as a normal image output you can preview or even save.
That's the whole trick, and it's a good one: nothing leaves your machine, no browser widgets, and it renders identically whether you're in the UI or hitting the API.
The inputs that matter
The required inputs are just two: input_count (how many schedules you want to view at once) and black_theme (dark graph, default on, which matches the pack's other nodes). The interesting one is input_count - bump it from 1 to 3 and you get sigma_1, sigma_2, sigma_3 sockets to wire up, and one output image per input, named IMAGE_1 through IMAGE_N.
That's the killer use case: wire the sigmas output of a KSampler and, say, a Dynamic Sigma Scheduler into two inputs, and you get side-by-side pictures of both curves. Compare the stock scheduler against your hand-drawn one without generating a single image. Leave a socket empty and it renders a blank placeholder, so comparing 2 versus 3 schedules is just a matter of the count.
Why you'd bother
Mostly, this node exists to build intuition. If you've never seen what "beta" or "simple" actually does to a sigma curve on your model, Graph Sigmas shows you at a glance - and on flow-matching models (Flux, Z-Image, Wan, LTX) that matters, because the community consensus is that aggressive curve reshaping makes those models worse, not better. Seeing that Karras is a cliff in the middle of the trajectory makes the "why" click instantly. It's also a great sanity check that a downloaded workflow's custom schedule is what its author claims it is.
Honestly, this is a node you'll reach for while learning and debugging, not one you'll leave in every workflow. It produces an image with zero generative effort - cheap to add, cheap to remove.
Install
Same pack, same steps as its sibling. ComfyUI Manager: search ComfyUI-Dynamic-Sigmas → Install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/crom8505/ComfyUI-Dynamic-Sigmas.git
cd ComfyUI-Dynamic-Sigmas
pip install -r requirements.txt # matplotlib is the only dependency
Restart ComfyUI. No models to download, nothing heavy - the entire dependency footprint of the pack is matplotlib.
Gotchas
- The output is an IMAGE, not a preview-only widget. That means it shows up as an image output, which is actually convenient for saving, but remember it's also a real tensor flowing through your graph - a 6x4-inch plot converted to pixels. It won't break anything, but don't wire it anywhere expecting it to be a mask.
- Missing inputs render blank. The source produces a small black placeholder for any socket you don't connect. It's a feature (stable output shapes), but if you see a black square you forgot to plug in a schedule.
- The pack's own scheduler is the intended partner. Graph Sigmas will happily plot a plain KSampler's sigmas, but the pairing that makes the whole pack worth it is drawing a curve in Dynamic Sigma Scheduler and checking it here - instant visual feedback on what you drew. Worth installing the pack for both, even if you only open one today.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| input_count | INT | 11–100 | — |
| black_theme | BOOLEAN | true | — |
| sigma_1opt | SIGMAS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE_1 | IMAGE | — |