Plot Themes

Plot themes are compositions of three independent layers:

  • Frame — background, axes, gridlines, titles.
  • Palette — discrete, sequential, and diverging color scales.
  • Typography — font families and sizes.

Set the active composition with plot_theme_id in config.json. Override individual layers with plot_frame_id, plot_palette_id, and plot_typography_id. Per-plot overrides live on the plot's TOML [plot] block as theme_id.

Where plot themes live

Built-in plot themes ship with the app. Custom plot themes go in ~/.config/likelio/plot-themes/{id}.json — the file's name is the lookup ID.

Schema: frame

background
#rrggbb[aa]
Plot background fill.
axis_color
#rrggbb[aa]
Axis line color.
axis_text_color
#rrggbb[aa]
Tick label color.
axis_title_color
#rrggbb[aa]
Axis title color.
grid_major
#rrggbb[aa]
Major gridline color.
grid_minor
#rrggbb[aa]
Minor gridline color.
title_color
#rrggbb[aa]
Plot title color.
subtitle_color
#rrggbb[aa]
Plot subtitle color.
legend_text_color
#rrggbb[aa]
Legend label color.
legend_bg
#rrggbb[aa]
Legend background fill.

Schema: palette

discrete
[#rrggbb[aa]]
Cycle of colors for categorical scales.
sequential
[#rrggbb[aa]]
Color stops for continuous (low → high) scales.
diverging
[#rrggbb[aa]]
Color stops for diverging (low → mid → high) scales.
missing_color
#rrggbb[aa]
Fill used for missing/null values.

Schema: typography

font_family
String?
Sans-serif family for plot text.
title_size
f32?
Plot title font size in px.
subtitle_size
f32?
Subtitle size.
axis_title_size
f32?
Axis title size.
axis_text_size
f32?
Tick label size.
legend_text_size
f32?
Legend label size.

Example

{
  "name": "midnight_plot",
  "frame": {
    "background": "#0a0a12",
    "axis_color": "#3a3a4a",
    "axis_text_color": "#8e8ea0",
    "grid_major": "#1a1a26",
    "grid_minor": "#10101a",
    "title_color": "#ededf0"
  },
  "palette": {
    "discrete": ["#f59e0b", "#4ade80", "#60a5fa", "#f87171", "#a78bfa"],
    "sequential": ["#0d0887", "#7e03a8", "#cc4778", "#f89441", "#f0f921"],
    "missing_color": "#1a1a26"
  },
  "typography": {
    "font_family": "Inter",
    "title_size": 16,
    "axis_text_size": 11
  }
}