- image
- xy_plot_info
- loop_control
- accumulated_images
- xy_plot_image
XY Plot End is the payoff node of the Info-Prompt-Toolkit XY trio. Start generates the per-cell settings, Modifier defines what varies, and End takes the resulting images and composes them into a single labeled grid - the thing you can actually look at and go "yeah, 0.8 is the LoRA strength." Without it, an XY plot is just a folder full of images you have to mentally line up.
It's the closing bookend in the same way Video Saver closes the video pair. Give it the generated cells and the plot's metadata, and it draws the axis labels, borders, and background, then hands you one grid image.
Inputs that matter
- image - the generated cell(s). Required.
- xy_plot_info - the labels and grid shape, straight from XY Plot Start's
xy_plot_infooutput. Required. - loop_control - the flow signal from Start. This is how End knows whether it's in loop mode or list mode: connected = loop mode (cells arrive one at a time and accumulate),
None= list mode (all cells in one go). The tooltip is explicit: "None means list mode." - background_color / text_color / border_color - hex colors (RRGGBB) for the grid chrome. Defaults are a clean light background (
F8F9FB), dark text (111827), and a neutral border (8A8F99). The defaults are genuinely fine; change them only if you're matching a brand or a theme. - y_label_width_ratio - how much of each cell's width the Y-axis label column may take (0.2–0.8, default 0.35). Only relevant if you're using Y modifiers.
- x_only_max_columns - in a single-row X-only plot, this wraps the row into multiple rows after N columns.
0keeps single-row mode.
There's also an accumulated_images input whose tooltip says it all: "Internal use only. Leave this unconnected." Leave it unconnected. In loop mode the accumulation is handled through the loop_control chain; wiring it manually is how you get weird duplicated cells.
Output
One output: xy_plot_image - the composed grid, ready for a preview or the pack's Image Saver. It's a single image, not a list, so you can drop it straight onto a Preview or Save node.
The loop/list handshake
This is the part that trips people up. The trio supports two execution modes, and End's behavior follows Start's:
- List mode: Start emits all cells at once; End gets the full batch in
imageandloop_controlarrives asNone. One composition at the end. - Loop mode: Start emits one cell per execution and increments the loop through
loop_control. End accumulates cells across turns - that's what the flow control exists for - and composes once the loop finishes. This is the mode that keeps memory down on big grids.
If the grid comes back half-composed or cells are missing, check that Start and End are using the same mode, and that loop_control is actually wired between them.
Installing
It ships in ComfyUI-Info-Prompt-Toolkit:
cd ComfyUI/custom_nodes
git clone https://github.com/kinorax/comfyui-info-prompt-toolkit.git
cd comfyui-info-prompt-toolkit
pip install -r requirements.txt
Or install via ComfyUI Manager (search the pack title) and restart ComfyUI. No extra models or downloads for the XY nodes. Like the rest of the pack it targets the newer node API, so keep ComfyUI at ≥ 0.17.0 or the node won't register. The trio is the closest ComfyUI has to A1111's one-click grid - End is what finally makes the results look like something you'd actually show someone.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Generated image(s) | |
| xy_plot_info | IPT-XYPlotInfo | XY plot labels and grid shape | |
| loop_control | FLOW_CONTROL | Loop control value from XY Plot Start (None means list mode) | |
| background_color | STRING | F8F9FB | XY plot background color (RRGGBB) |
| text_color | STRING | 111827 | XY plot text color (RRGGBB) |
| border_color | STRING | 8A8F99 | XY plot border and grid color (RRGGBB) |
| y_label_width_ratio | FLOAT | 0.350.2–0.8 | Y-label width upper ratio against cell width |
| x_only_max_columns | INT | 00–9999 | 0 keeps single-row mode. >=1 wraps only when Y modifiers are not used. |
| accumulated_imagesopt | * | Internal use only. Leave this unconnected. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| xy_plot_image | IMAGE | — |