ComfyUI Node Runs on cloud

xyPlot

The old-school grid node (and why you're probably here by accident)

By TinyTerraΒ·Created 3 years agoΒ·Updated 3 months agoΒ· 602
xyPlot
    • xyPlot
    β—„grid_spacing0β–Ί
    β—„latent_id0β–Ί
    β—„output_individualsFalseβ–Ί
    β—„flip_xyFalseβ–Ί
    β—„x_axisNoneβ–Ί
    β—„x_valuesβ–Ί
    β—„y_axisNoneβ–Ί
    β—„y_valuesβ–Ί

    If you searched "xyPlot" because you want a grid comparing samplers, CFG values, or LoRA strengths, you found the right family of node - but probably the wrong member. This ttN xyPlot is the legacy version from tinyterraNodes, the one that only plugs into the pack's old v1 pipe nodes. The current one is advanced xyPlot in the same pack. If you're building a new workflow, go grab that one instead. This article is for the people who loaded an older workflow, hit a missing node, or want to understand how the whole thing works before moving up.

    That said, the legacy node is genuinely worth understanding, because the mechanism is the same idea the modern one does with nicer tooling.

    Why xy plots exist at all

    Grid plotting is the classic way to compare parameters without going insane: lock the seed, vary one thing on the X axis, another on the Y axis, and read the resulting grid like a contact sheet. The community debugging principle is "change one variable at a time with a fixed seed" - an xy plot just automates the tedious parts of that. The tinyterra nodes get used heavily for exactly this, especially comparing LoRA epochs and weights, which is the most common reason people search for these nodes.

    How it works

    You pick a parameter for x_axis and (optionally) y_axis from a dropdown, type a list of values into x_values/y_values, and the node hands a single xyPlot (XYPLOT) output to a legacy pipeKSampler or pipeKSamplerSDXL. That sampler runs once per combination and stitches the results into a labeled grid. Anything you didn't set on an axis comes straight from the connected loader and sampler, which keeps the node small.

    The dropdown splits into two families: sampler: params (steps, cfg, sampler_name, scheduler, denoise, seed - with special increment/decrement/randomize options - plus lora_name and lora model/clip strengths) and loader: params (ckpt_name, vae_name, clip_skip, lora1–3, positive/negative prompts, token normalization, weight interpretation). So yes, you can even grid across checkpoints or prompts, not just sampler settings.

    The inputs that matter

    • x_axis / x_values and y_axis / y_values - the parameter to sweep and the values, separated by "; " (semicolon-space). Example: axis sampler: steps, values 20; 25; 30.
    • grid_spacing - pixels of gap between grid cells (0–500).
    • flip_xy - swap the axes, handy when you realize the wide dimension should be the X axis.
    • output_individuals - True saves each cell as its own image instead of only the composite grid. You'll want this on for LoRA comparison when you plan to rerun the winners.
    • latent_id - if your pipe is using a batched latent, this picks which latent in the batch gets plotted.

    Output is a single xyPlot (XYPLOT) wire.

    The gotchas that actually bite

    Values must be separated by "; " - semicolon-space, not commas. The node parses on that exact separator; comma-separated input silently collapses into one giant value.

    It only talks to the legacy nodes. The XYPLOT output type here won't connect to the current pipeKSampler v2. That's not a bug; the v2 line uses advanced xyPlot with a different output type (ADV_XYPLOT) plus the advPlot range/string/combo helper nodes that build the syntax for you. If your workflow was made in the last couple years, it's almost certainly using those.

    Leave an axis as "None" for a single row or column - the node treats None as "don't sweep this axis."

    Installing it

    Same as every node in the pack - there's no separate install for the legacy ones:

    cd ComfyUI/custom_nodes
    git clone https://github.com/TinyTerra/ComfyUI_tinyterraNodes
    

    Restart ComfyUI. Or use ComfyUI Manager and search "ComfyUI_tinyterraNodes". No extra dependencies, no model downloads.

    One honest recommendation: if you're here to actually build a comparison grid, skip straight to advanced xyPlot and its advPlot helpers. Read this page to understand what the grid is doing under the hood - that understanding transfers 1:1. The legacy node is a museum piece that still works, and now you know why it lives in the legacy category.

    Category🌏 tinyterra/legacy

    Inputs (8)

    NameTypeDefaultDescription
    grid_spacingINT00–500β€”
    latent_idINT00–100β€”
    output_individualsCOMBOFalse2 options: False, True
    flip_xyCOMBOFalse2 options: False, True
    x_axisCOMBONone34 options: None, ---------------------, sampler: lora_name, sampler: lora_model_strength, sampler: lora_clip_strength, sampler: lora_model&clip_strength, +28
    x_valuesSTRINGβ€”
    y_axisCOMBONone34 options: None, ---------------------, sampler: lora_name, sampler: lora_model_strength, sampler: lora_clip_strength, sampler: lora_model&clip_strength, +28
    y_valuesSTRINGβ€”

    Outputs (1)

    NameTypeDescription
    xyPlotXYPLOTβ€”