Skip to content

Holoviews default colormap is not being applied #1715

@mgunyho

Description

@mgunyho

ALL software version info

(this library, plus any other relevant software, e.g. bokeh, python, notebook, OS, browser, etc should be added within the dropdown below.)

Software Version Info

pyproject.toml

[project]
name = "hv-colormap-test"
version = "0.1.0"
requires-python = ">=3.13"
dependencies = [
    "hvplot>=0.12.2",
    "jupyter>=1.1.1",
    "xarray>=2025.12.0",
]

output of uv pip list

Package                   Version
------------------------- -----------
anyio                     4.12.1
argon2-cffi               25.1.0
argon2-cffi-bindings      25.1.0
arrow                     1.4.0
asttokens                 3.0.1
async-lru                 2.1.0
attrs                     25.4.0
babel                     2.17.0
beautifulsoup4            4.14.3
bleach                    6.3.0
bokeh                     3.8.2
certifi                   2026.1.4
cffi                      2.0.0
charset-normalizer        3.4.4
colorcet                  3.1.0
comm                      0.2.3
contourpy                 1.3.3
debugpy                   1.8.19
decorator                 5.2.1
defusedxml                0.7.1
executing                 2.2.1
fastjsonschema            2.21.2
fqdn                      1.5.1
h11                       0.16.0
holoviews                 1.22.1
httpcore                  1.0.9
httpx                     0.28.1
hvplot                    0.12.2
idna                      3.11
ipykernel                 7.1.0
ipython                   9.9.0
ipython-pygments-lexers   1.1.1
ipywidgets                8.1.8
isoduration               20.11.0
jedi                      0.19.2
jinja2                    3.1.6
json5                     0.13.0
jsonpointer               3.0.0
jsonschema                4.26.0
jsonschema-specifications 2025.9.1
jupyter                   1.1.1
jupyter-client            8.8.0
jupyter-console           6.6.3
jupyter-core              5.9.1
jupyter-events            0.12.0
jupyter-lsp               2.3.0
jupyter-server            2.17.0
jupyter-server-terminals  0.5.4
jupyterlab                4.5.3
jupyterlab-pygments       0.3.0
jupyterlab-server         2.28.0
jupyterlab-widgets        3.0.16
lark                      1.3.1
linkify-it-py             2.0.3
markdown                  3.10.1
markdown-it-py            4.0.0
markupsafe                3.0.3
matplotlib-inline         0.2.1
mdit-py-plugins           0.5.0
mdurl                     0.1.2
mistune                   3.2.0
narwhals                  2.15.0
nbclient                  0.10.4
nbconvert                 7.16.6
nbformat                  5.10.4
nest-asyncio              1.6.0
notebook                  7.5.3
notebook-shim             0.2.4
numpy                     2.4.1
packaging                 26.0
pandas                    3.0.0
pandocfilters             1.5.1
panel                     1.8.6
param                     2.3.1
parso                     0.8.5
pexpect                   4.9.0
pillow                    12.1.0
platformdirs              4.5.1
prometheus-client         0.24.1
prompt-toolkit            3.0.52
psutil                    7.2.1
ptyprocess                0.7.0
pure-eval                 0.2.3
pycparser                 3.0
pygments                  2.19.2
python-dateutil           2.9.0.post0
python-json-logger        4.0.0
pyviz-comms               3.0.6
pyyaml                    6.0.3
pyzmq                     27.1.0
referencing               0.37.0
requests                  2.32.5
rfc3339-validator         0.1.4
rfc3986-validator         0.1.1
rfc3987-syntax            1.1.0
rpds-py                   0.30.0
send2trash                2.1.0
setuptools                80.10.2
six                       1.17.0
soupsieve                 2.8.3
stack-data                0.6.3
terminado                 0.18.1
tinycss2                  1.4.0
tornado                   6.5.4
tqdm                      4.67.1
traitlets                 5.14.3
typing-extensions         4.15.0
tzdata                    2025.3
uc-micro-py               1.0.3
uri-template              1.3.0
urllib3                   2.6.3
wcwidth                   0.5.0
webcolors                 25.10.0
webencodings              0.5.1
websocket-client          1.9.0
widgetsnbextension        4.0.15
xarray                    2025.12.0
xyzservices               2025.11.0

Description of expected behavior and the observed behavior

Changing the default colormap through hv.opts.defaults(hv.opts.Image(cmap=...)) does not affect the default colormap. In the documentation, I couldn't find another way to set the default. Setting the defaults for e.g. line plots using hv.opts.Curve works.

Complete, minimal, self-contained example code that reproduces the issue

# code goes here between backticks
import xarray as xr
import numpy as np

import holoviews as hv
import hvplot.xarray

hv.extension("bokeh")

hv.opts.defaults(
    hv.opts.Image(cmap="viridis"),
)

arr = xr.DataArray(
    np.random.default_rng().random((10, 10)),
    coords=[("x", np.linspace(0, 1, 10)), ("y", np.arange(10))],
    name="example",
)

arr.hvplot.image()

Stack traceback and/or browser JavaScript console output

N/A

Screenshots or screencasts of the bug in action

With the MWE code, the plot is using the default blue colormap:
Image

Note that normal hv plotting applies the colormap correctly:

Image

We can also check that defaults set in the same way are applied for line plots:

Image

I also tried hv.config(default_cmap="viridis", default_gridded_cmap="viridis", default_heatmap_cmap="viridis"), but it did not help either. hv.config shows the default_cmap unchanged after setting it with hv.opts.defaults, I'm not sure what is the relationship between hv.config and hv.opts.defaults.

  • I may be interested in making a pull request to address this

Metadata

Metadata

Assignees

No one assigned

    Labels

    TRIAGERequires triage or initial assessment

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions