ComfyUI Node Runs on cloud

XY Plot

Sweep two parameters into a comparison grid

By yolain·Created 3 years ago·Updated 12 days ago· 2,647
XY Plot
  • pipe
  • pipe
grid_spacing0
output_individualsFalse
flip_xyFalse
x_axisNone
x_values
y_axisNone
y_values

The single best way to actually learn what a setting does is to hold everything else still and vary just that setting across a row of images. easy XYPlot automates that. Pick a parameter for the X axis and one for the Y, give each a list of values, and it renders every combination into a labeled grid. It's the ComfyUI answer to A1111's X/Y plot, wired into the Easy-Use pipe system.

Why you'd reach for it

Two questions this answers instantly:

  • "What's the right value for X?" Sweep steps from 15 to 40, or cfg from 3 to 9, across a single seed, and read the grid for where quality plateaus. You stop guessing and start looking.
  • "Which of these is better?" Put four checkpoints on one axis and three samplers on the other and generate the whole matrix in one run. Comparing by memory across separate generations is unreliable; comparing them side by side in a grid is not.

Because it's built on the Easy-Use pipe, the axes aren't arbitrary strings - they're the actual parameters flowing through your loader and pre-sampling nodes, so the plot changes the real setting and re-runs, rather than faking it.

The inputs that matter

  • x_axis and y_axis - the two parameters to vary. The menu draws from the pipe: preSampling: steps, preSampling: cfg, preSampling: sampler_name, preSampling: scheduler, preSampling: denoise, preSampling: seed, and loader settings like loader: ckpt_name, loader: vae_name, loader: clip_skip, and more. Set one axis to None to sweep a single parameter as a row.
  • x_values and y_values - the list of values for each axis (multiline). For numeric params, list the numbers you want; for things like samplers or checkpoints, list the names. These are the columns and rows of your grid.
  • pipe (optional PIPE_LINE) - the Easy-Use pipe carrying your generation settings. This is what makes the sweep real. The node outputs a modified pipe that you run through the rest of the flow to produce the grid.
  • flip_xy swaps which parameter is rows vs columns; grid_spacing sets the gap between cells; output_individuals additionally emits each cell as its own image, not just the assembled grid.

Installing it

ComfyUI Manager: search ComfyUI Easy Use, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use

then install the requirements (install.bat on Windows, else pip install -r ComfyUI-Easy-Use/requirements.txt) and restart.

Common issues

  • It expects the Easy-Use pipe. The axis choices are the pipe's parameters, so this node is designed to sit in a workflow built from Easy-Use loaders and pre-sampling nodes. If your axes list nothing useful, your pipe isn't wired (or isn't an Easy-Use pipe).
  • Your value list has to match the parameter type. Listing dpmpp_2m under a numeric steps axis, or a step count under a sampler_name axis, won't plot. Names for name-params, numbers for numeric ones - and spelled the way ComfyUI spells them.
  • Big grids cost real time. A grid is X × Y full generations. A 6×6 sweep is 36 images; plan the run accordingly and start with small lists to confirm the axes are right before you commit to a large matrix.
  • Odd interactions with the a1111 prompt style. The pack has fixed XYPlot bugs tied to a1111_prompt_style before, so if a plot behaves strangely with that loader option on, update Easy-Use.
CategoryEasyUse/Pipe

Inputs (8)

NameTypeDefaultDescription
grid_spacingINT00–500
output_individualsCOMBOFalse2 options: False, True
flip_xyCOMBOFalse2 options: False, True
x_axisCOMBONone17 options: None, ---------------------, preSampling: steps, preSampling: cfg, preSampling: sampler_name, preSampling: scheduler, +11
x_valuesSTRING
y_axisCOMBONone17 options: None, ---------------------, preSampling: steps, preSampling: cfg, preSampling: sampler_name, preSampling: scheduler, +11
y_valuesSTRING
pipeoptPIPE_LINE

Outputs (1)

NameTypeDescription
pipePIPE_LINE