XY Input: LoRA Plot
LoRA Plot
- lora_stack
- X
- Y
Most XY Input nodes drive one axis. This one drives both - it's the node behind the pack's signature demo, a full grid of LoRA model strength across the top and clip strength down the side (or a batch of LoRAs against a strength sweep). If you want a proper 2D matrix in one node instead of wiring up two separate XY inputs, this is it.
It feeds an XY Plot node; on its own it does nothing.
Why you'd reach for it
Finding a LoRA's best settings is a two-variable problem more often than people admit. A LoRA can have a strong model effect but overcook the CLIP side, so the interesting question isn't "what weight" but "what combination of model and clip strength." This node lays that out as a grid so you can spot the cell that actually looks right. It's also how you compare a whole folder of LoRAs while varying strength at the same time - batch on one axis, strength on the other.
The inputs and outputs
The key input is input_mode, which sets what the two axes are:
X: LoRA Batch, Y: LoRA WeightX: LoRA Batch, Y: Model StrengthX: LoRA Batch, Y: Clip StrengthX: Model Strength, Y: Clip Strength
That last one is the classic model-vs-clip grid.
Then:
lora_name- the LoRA to test (for the strength-vs-strength modes).model_strength/clip_strength- the baseline strengths.X_first_value/X_last_valueandY_first_value/Y_last_value- the ranges each axis sweeps.X_batch_count/Y_batch_count- how many steps (cells) each axis is divided into.X_batch_path/X_subdirectories/X_batch_sort- for the batch modes, the folder of LoRAs to sweep on the X axis.lora_stack(optional) - sit the plotted LoRA on top of an existing stack.
Unlike the other XY inputs, this node has two outputs, X and Y - wire both into the matching X and Y inputs of the XY Plot node. That's the part people miss.
Installing it
ComfyUI Manager → search Efficiency Nodes for ComfyUI, or:
cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui
Restart after. LoRA files go in models/loras (or under your batch path).
Common issues
The most common wiring mistake is connecting only one of the two outputs. This node produces both X and Y; hook both into the XY Plot or you'll get a 1D strip instead of the 2D grid you set up.
Watch the total cell count too - X_batch_count times Y_batch_count is how many images it renders, and it climbs fast. A 6×6 is 36 generations; be deliberate before you queue a big one.
Same SDXL caveat as the other LoRA nodes: on the base+refiner path this pack has historically applied LoRAs to the base only, not the refiner, so weak-looking results there may be that quirk rather than your ranges. And it only works through an XY Plot feeding an Efficient KSampler. Pack-wide: a missing node usually means IMPORT FAILED at startup (often a pip freeze error) - update ComfyUI, the packages and the node.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| input_mode | COMBO | 4 options: X: LoRA Batch, Y: LoRA Weight, X: LoRA Batch, Y: Model Strength, X: LoRA Batch, Y: Clip Strength, X: Model Strength, Y: Clip Strength | |
| lora_name | COMBO | 1 options: None | |
| model_strength | FLOAT | 1.00-10–10 | — |
| clip_strength | FLOAT | 1.00-10–10 | — |
| X_batch_count | INT | 30–50 | — |
| X_batch_path | STRING | /example_folder | — |
| X_subdirectories | BOOLEAN | false | — |
| X_batch_sort | COMBO | 2 options: ascending, descending | |
| X_first_value | FLOAT | 0.00-10–10 | — |
| X_last_value | FLOAT | 1.00-10–10 | — |
| Y_batch_count | INT | 30–50 | — |
| Y_first_value | FLOAT | 0.00-10–10 | — |
| Y_last_value | FLOAT | 1.00-10–10 | — |
| lora_stackopt | LORA_STACK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| X | XY | — |
| Y | XY | — |