Nodes/D2 Nodes ComfyUI/D2 XY Plot Easy Mini
ComfyUI Node

D2 XY Plot Easy Mini

The XY plot that auto-queues a full grid — checkpoint, prompt, seed, steps, you name it

By da2el-ai·Created 2 years ago·Updated 5 days ago· 66
D2 XY Plot Easy Mini
  • reset
  • index
  • remaining_time
  • xy_seed
  • progress_bar
  • d2_pipe
  • grid_pipe
  • positive
  • negative
  • ckpt_name
  • ckpt_type
  • x_other
  • y_other
positive
negative
ckpt_name
unet_name
ckpt_type
seed0
steps20
cfg7.00
sampler_name
scheduler
denoise1.00
x_type
x_list
y_type
y_list
auto_queuetrue
start_index0

This is the flagship node of the D2 pack and the one worth installing the pack for. XY Plot Easy Mini runs a full grid of generations on its own: you give it sampler settings plus an x_list and y_list, it figures out every combination, queues them one after another, and feeds each run into the same KSampler - swapping in the right value for each cell. auto_queue means you hit Queue once and walk away while it burns through the whole grid.

If you've ever built an XY plot with Efficiency Nodes or Essentials and then fought with index bookkeeping, this is the friendlier version: the loop state lives inside the node, and a D2 Grid Image downstream stitches the results into a labeled grid. Mini is the trimmer sibling of D2 XY Plot Easy - same engine, fewer output slots, smaller node on the canvas. For most people, Mini is the right one.

The inputs that matter

The top half is just KSampler settings: positive, negative, seed, steps, cfg, sampler_name, scheduler, denoise. Then:

  • ckpt_name / unet_name / ckpt_type - ckpt_type = stable_diffusion uses ckpt_name; diffusion uses unet_name. The chosen name comes out on the ckpt_name output.
  • x_type / y_type - what each axis varies: none, positive, negative, ckpt_name, seed, steps, cfg, sampler_name, scheduler, denoise, or STRING / INT / FLOAT (free-form values that come out on x_other / y_other).
  • x_list / y_list - the values, one per line.
  • auto_queue - on: it queues every combination for you. Off: you click Queue manually (still keeps its place via start_index).
  • reset - a button to restart the index when you stop mid-grid.

Outputs: d2_pipe (a bundle for D2 KSampler - one wire carries model, prompts, and all sampler params), grid_pipe (for D2 XY Grid Image), plus positive, negative, ckpt_name, ckpt_type, x_other, y_other.

How the loop works

It computes x_len × y_len combinations and processes all of x before advancing y (so x is the fast axis). Each execution outputs the current cell's values - that's the trick that makes it work: the same node, run repeatedly, with its state tracked by the frontend. With auto_queue on, it keeps queuing until the grid is done.

Two behaviors worth knowing. When x_type/y_type is positive or negative, the first line of the list is the search string and each subsequent line replaces it - a built-in prompt S/R. And when the type is STRING/INT/FLOAT, values come out on x_other/y_other instead of being applied internally, which is how you drive nodes the plot doesn't know about.

Installing

Part of the D2-nodes-ComfyUI pack - install the pack, not the node.

  • ComfyUI Manager → search "D2-nodes-ComfyUI" → Install → restart.
  • Or cd ComfyUI/custom_nodes && git clone https://github.com/da2el-ai/D2-nodes-ComfyUI and restart.

Dependencies: piexif, charset-normalizer, no model downloads. Pack gotcha: v32.0.0+ requires the newer ComfyUI V3 schema; older ComfyUI → pre-32.0.0 release. Delete the old standalone ComfyUI-d2-xyplot-utils pack if you have it - it merged in here.

Notes and gotchas

d2_pipe values override whatever's set directly on the KSampler, so if you change steps on the sampler and have steps as an axis, the axis wins. Put the heavy axis (like ckpt_name, which reloads a model per cell) on y, since y advances slowest. And if you stop mid-grid, hit reset before re-queueing, or it resumes from where it stopped - which is sometimes exactly what you want.

CategoryD2/XY Plot

Inputs (22)

NameTypeDefaultDescription
positiveSTRING
negativeSTRING
ckpt_nameCOMBO0 options:
unet_nameCOMBO0 options:
ckpt_typeCOMBO2 options: stable_diffusion, diffusion
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT7.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
x_typeCOMBO13 options: none, positive, negative, ckpt_name, seed, steps, +7
x_listSTRING
y_typeCOMBO13 options: none, positive, negative, ckpt_name, seed, steps, +7
y_listSTRING
auto_queueBOOLEANtrue
start_indexINT0
resetoptD2_BUTTON
indexoptD2_XYPLOT_INDEX
remaining_timeoptD2_TIME
xy_seedoptD2_SEED
progress_baroptD2_PROGRESS_BAR

Outputs (8)

NameTypeDescription
d2_pipeD2_TD2Pipe
grid_pipeD2_TGridPipe
positiveSTRING
negativeSTRING
ckpt_name*
ckpt_typeSTRING
x_other*
y_other*