DJZ Color Wheel
Color Wheel Math in Hex
- color_1
- color_2
- color_3
DJZ Color Wheel is the node for when you know you want colors that go together but can't be bothered to keep a color-theory cheat sheet open. You feed it one hex color, pick a scheme, and it hands back three harmonious hex codes computed from color wheel math. Complementary, triadic, tetradic, analogous, split-complementary, square - the classic schemes, all algorithmically derived from your starting point.
A thing to get straight immediately: this is a text/string node, not an image node. It outputs three STRING hex colors, not a swatch image. If your workflow has nodes that accept hex color strings - a color-picker utility, a background fill, a palette node - that's exactly what this plugs into. It's a small, single-purpose tool, and it does the one thing well.
How it works
The math is textbook color theory. Your base_color hex gets converted to HSV, and each scheme is just a rotation around the hue wheel: complementary is +180°, triadic is +120° increments, analogous is ±30°, tetradic and square are 90°-based, and split-complementary takes the complement and nudges ±30°. The contrast_style then adjusts saturation and value - High Contrast pushes s/v apart, Pastel kills saturation and lifts value, Dark crushes value, Muted compresses saturation. Every scheme returns exactly three colors (tetradic and square technically produce four, but the node outputs the first three).
The randomize toggle plus seed lets you roll the wheel: flip it on and the base color is derived from the seed instead of your typed value, which is a nice way to generate palette candidates without typing hex codes.
The inputs that matter
base_color- a hex string like#FF0000(the#is optional). This is your anchor.color_scheme- the six schemes. Complementary is the safest; Analogous is the calmest; Triadic is the most playful.contrast_style- six options from Standard to Dark. This changes mood far more than people expect.randomize/seed- toggled random palette generation.
Outputs: color_1, color_2, color_3 - three STRING hex codes.
Installing it
DJZ Color Wheel is part of DJZ-Nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Nodes
cd DJZ-Nodes
pip install -r requirements.txt
Restart ComfyUI, or install via Manager (search "DJZ-Nodes"). It uses only Python's standard library (colorsys), so there are zero extra dependencies - it works even if the rest of the pack's install is being fussy.
Common issues
The main thing to remember is the output is strings, and not every node downstream accepts hex - some want RGB tuples or named colors, so check your target node's input type before wiring. Also, because tetradic and square schemes generate a fourth color that never gets output, don't be surprised when you don't get a full 4-color palette out of a 3-output node. And contrast_style operates on HSV, so Dark on a mid-tone base can produce three colors that look nearly identical in value - if the palette reads flat, switch to High Contrast or Vibrant.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| base_color | STRING | #FF0000 | — |
| color_scheme | COMBO | Complementary | 6 options: Complementary, Triadic, Tetradic, Analogous, Split-Complementary, Square |
| contrast_style | COMBO | Standard | 6 options: Standard, High Contrast, Muted, Vibrant, Pastel, Dark |
| randomize | BOOLEAN | false | — |
| seed | INT | 00–999999 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| color_1 | STRING | — |
| color_2 | STRING | — |
| color_3 | STRING | — |