Fantastic Plotter Image Saver ๐
Turn a LoRA sweep into one labelled grid image
- images
- grid
- images
- metadata
- global_loras_info
The Plotter generates all the cells; this node makes them readable. The Fantastic Plotter Image Saver takes the Plotter's per-cell images plus its metadata labels and composes them into a single grid image - one labelled comparison you can save, share, or drop into a gallery. Under the hood it fuses the jobs of three separate nodes (a plot label saver, an image-list-to-batch resizer, and a grid composer), which is exactly the kind of consolidation this pack is about.
Why you'd use it
You could save all your sweep cells and arrange them in an image editor yourself. You won't - not after the tenth cell. This node does the arranging, with two layout styles to choose from:
- Overlay (default) - each cell keeps a small semi-transparent label box drawn in its corner (lora name + strength). Cells stay self-describing however the grid gets cropped or shared.
- Classic - the A1111-style XY grid: cells stay clean, LoRA names run down the left margin and strengths across the top. This needs a complete lora ร strength rectangle, so it only makes sense in the Plotter's Global sweep mode; if the metadata doesn't form a clean grid it falls back to Overlay and tells you in the console.
The grid layout is automatic: with images_per_row at its default of 0, the node counts the distinct strength values in the metadata and uses that as the column count, so Global-mode sweeps lay out as a true XY grid with zero configuration. The one special case - several LoRAs at a single shared strength (one image each) - defaults to laying them out in one row; flip single_strength_layout to column if you'd rather stack them.
Inputs and outputs
Required inputs: images (the per-cell images) and metadata (the Plotter's label strings). Then the label formatting knobs - text_color, background_color (12 named colors each), font_size (default 20), padding, and opacity for the overlay box. Two that actually matter for big sweeps:
constrain_size- when on, each cell is scaled down so its longest side equalsmax_cell_size(default 768, max 2048) before the grid is assembled. A 4ร4 grid of 1024px images would otherwise become a ~4096px-wide monster; this keeps it sane.classic_grid- the Overlay/Classic mode toggle.
Optional input global_loras_info carries the globals summary through for labeling. Outputs: grid (the single composed IMAGE, for any Save Image node), plus images, metadata, and global_loras_info passed straight through as lists - so a Fantastic Plotter Grid Viewer can hang off this node rather than re-tapping the Plotter's wires.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Adudeguyman/comfyui_fantastic-loras
or ComfyUI Manager โ search Fantastic Loras, then restart and hard-refresh. No dependencies. The README notes the original implementation leaned on the Impact Pack and fill-nodes, but the shipped node is self-contained - you don't need either installed.
Common issues
- Grid came out in one column instead of a row. That's the single-strength case - set
single_strength_layouttorow(it's the default) if every LoRA was tested at the same strength. - Classic mode silently fell back to Overlay. The metadata didn't form a complete lora ร strength rectangle. Use the Plotter's Global sweep mode so every LoRA appears at every strength.
- The grid is enormous. Turn on
constrain_sizeand/or check the Plotter's SWEEP footer count before queueing. - Cells look different sizes. This node resizes to a common size before composing; if cells are wildly different resolutions,
constrain_sizegives you tighter control over the final output.
One design note: the grid output is a flattened image, so you can't pull cells back out of it - that's exactly why the images passthrough exists. If you want to browse cells interactively after composing, that's what the Grid Viewer is for; run both.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | โ | |
| metadata | STRING | โ | |
| constrain_size | BOOLEAN | false | When on, each cell image is scaled down so its longest side equals Max Cell Size before the grid is assembled. Use this to keep the overall output manageable when rendering many large images โ e.g. a 4x4 grid of 1024px images becomes a 4x4 grid of smaller cells instead of a giant ~4096px-wide output. Has no effect when off. |
| max_cell_size | INT | 76864โ2048 | Longest side of each cell image in pixels. Only used when Constrain Image Output Size is on. |
| text_color | COMBO | white | 12 options: white, black, red, green, blue, yellow, +6 |
| background_color | COMBO | black | 12 options: white, black, red, green, blue, yellow, +6 |
| font_size | INT | 208โ256 | โ |
| padding | INT | 100โ100 | โ |
| opacity | FLOAT | 1.000โ1 | โ |
| images_per_row | INT | 00โ64 | 0 = auto (one column per distinct strength). >0 overrides. Ignored in classic grid. |
| single_strength_layout | COMBO | row | Only applies in auto mode when every lora is tested at a single (same) strength, i.e. one image per lora. row (default): loras lay out side by side in one row. column: loras stack vertically in one column. Has no effect when strengths vary (that already forms a row) or when images_per_row is set. |
| classic_grid | BOOLEAN | false | Off (default): overlays each image's metadata as a label box drawn ON the image. On: classic XY plot โ images are padded and the labels are drawn OUTSIDE along the border, loras down the left (rows) and strengths across the top (columns). Needs a full lora x strength grid; otherwise it falls back to overlay. |
| global_loras_infoopt | STRING | โ |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| grid | IMAGE | โ |
| images | IMAGE | โ |
| metadata | STRING | โ |
| global_loras_info | STRING | โ |