Nodes/Fantastic Loras/Fantastic Lora Plotter ๐Ÿ“Š
ComfyUI Node

Fantastic Lora Plotter ๐Ÿ“Š

An XY LoRA test bench that runs the whole comparison in one queue

By AdudeguymanยทCreated 3 months agoยทUpdated 17 days agoยท 17
Fantastic Lora Plotter ๐Ÿ“Š
  • model
  • clip
  • global_loras
  • model_2
  • model_3
  • model_4
  • model_5
  • MODEL
  • CLIP
  • metadata
  • global_loras_info
  • MODEL 2
  • MODEL 3
  • MODEL 4
  • MODEL 5
โ—„lora_data{}โ–บ

The standard way to compare LoRAs in ComfyUI is miserable. You build a dozen loaders, mute and unmute them by hand, generate, scribble notes, and pray you didn't change anything else between runs. The Fantastic Lora Plotter is the fix: an XY test bench where LoRAs go on one axis, strengths on the other, and ComfyUI runs every combination from a single Queue press.

The author flagged this one before it existed - the launch thread for the loader ended with "I'm planning to have Claude make an easy-to-use XY plot setup," and a commenter noted that XY grids are "the one feature A1111 nailed" that ComfyUI still lacked. The Plotter is that gap, filled.

How it works

The same slot grid as the loader, but the meaning flips: each slot is a test cell, not a layer. Five LoRAs means five images, each with one LoRA applied to the base model - never stacked. And the trick that makes one-queue work: MODEL, CLIP, and metadata are list outputs. ComfyUI runs everything downstream once per item in the list, so a 12-cell sweep executes your sampler 12 times automatically. You don't build batch loops or re-queue by hand.

Two sweep modes live in the UI:

  • Per-line - each enabled LoRA runs once, at whatever strength its chip says. Good for "which of these twelve do I actually like."
  • Global - every LoRA runs at every strength in a shared list (0.5, 0.75, 1.0), which is the classic XY: LoRAs down the Y axis, strengths across the X. Chip strengths grey out here.

There's a control image baseline (one cell with no LoRAs at all - the raw base model) that makes everything else legible, and it's cheap; leave it on. If you want a different set of LoRAs held constant across every cell, that's what the separate Fantastic Plotter Global Lora node is for - connect its output to the global_loras input and it layers on top of every swept cell.

Inputs and outputs

The required inputs are model and the hidden lora_data blob; clip is optional (skip it if your LoRAs only touch the diffusion model). The global_loras input takes the Global Lora node's FL_GLOBAL_LORAS output. Optional model_2โ€“model_5 let you run the same sweep against several base checkpoints at once.

Outputs:

  • MODEL (list) - one patched model per cell; wire this into your sampler.
  • CLIP (list) - matching text-encoder outputs.
  • metadata (list of STRING) - a label per cell (loraname_0.5); send it to the Image Saver or Grid Viewer.
  • global_loras_info (STRING) - a summary of the attached globals, passed through to the saver.
  • MODEL 2โ€“MODEL 5 (lists) - parallel sweeps on the extra checkpoints.

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 the browser. No dependencies. Two example workflows ship in example_workflows/, including a ready-to-run XY tester.

The traps

  • Fix your seed first. The single most important rule, straight from the README and from every debugging guide in existence: a comparison with a random seed per cell changes the noise along with the LoRA and proves nothing. Drop in the pack's Fantastic Seeds node, set fixed.
  • Watch the multiplication. The SWEEP footer does the arithmetic live - read it before queueing. Six LoRAs at four strengths across two models is 48 generations plus baselines. The count escapes people constantly.
  • Everything downstream runs per cell. A heavy upscale chain in the path after the Plotter runs 12 times, so a 12-cell sweep costs you 12 upscales. Keep the downstream graph lean while you're iterating.

The other thing worth knowing: there's no per-LoRA routing here - every LoRA is tested against every connected model, because the point is comparison, not stacking. That's what the M1 M2 tags on the chips are telling you. The Grid Viewer is the nice way to actually read the results; the Image Saver turns them into a single labelled grid you can keep.

Categoryloaders

Inputs (8)

NameTypeDefaultDescription
modelMODELโ€”
lora_dataSTRING{}Managed by the Fantastic Lora Loader UI.
clipoptCLIPโ€”
global_lorasoptFL_GLOBAL_LORASโ€”
model_2optMODELโ€”
model_3optMODELโ€”
model_4optMODELโ€”
model_5optMODELโ€”

Outputs (8)

NameTypeDescription
MODELMODELโ€”
CLIPCLIPโ€”
metadataSTRINGโ€”
global_loras_infoSTRINGโ€”
MODEL 2MODELโ€”
MODEL 3MODELโ€”
MODEL 4MODELโ€”
MODEL 5MODELโ€”