Skip to content

Time zone information is not preserved in hvplot.xarray image and quadmesh #1722

@mgunyho

Description

@mgunyho

ALL software version info

Software Version Info

pyproject.toml:

[project]
name = "hvplot-quadmesh-timezone"
version = "0.1.0"
requires-python = ">=3.13"
dependencies = [
    "hvplot>=0.12.2",
    "jupyter>=1.1.1",
    "xarray>=2026.2.0",
]

Output of uv pip freeze:

anyio==4.13.0
argon2-cffi==25.1.0
argon2-cffi-bindings==25.1.0
arrow==1.4.0
asttokens==3.0.1
async-lru==2.3.0
attrs==26.1.0
babel==2.18.0
beautifulsoup4==4.14.3
bleach==6.3.0
bokeh==3.9.0
certifi==2026.2.25
cffi==2.0.0
charset-normalizer==3.4.7
colorcet==3.1.0
comm==0.2.3
contourpy==1.3.3
debugpy==1.8.20
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.2.0
ipython==9.12.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.14.0
jsonpointer==3.1.1
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.1
jupyter-server==2.17.0
jupyter-server-terminals==0.5.4
jupyterlab==4.5.6
jupyterlab-pygments==0.3.0
jupyterlab-server==2.28.0
jupyterlab-widgets==3.0.16
lark==1.3.1
linkify-it-py==2.1.0
markdown==3.10.2
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.19.0
nbclient==0.10.4
nbconvert==7.17.0
nbformat==5.10.4
nest-asyncio==1.6.0
notebook==7.5.5
notebook-shim==0.2.4
numpy==2.4.4
packaging==26.0
pandas==3.0.2
pandocfilters==1.5.1
panel==1.8.10
param==2.3.3
parso==0.8.6
pexpect==4.9.0
pillow==12.2.0
platformdirs==4.9.4
prometheus-client==0.24.1
prompt-toolkit==3.0.52
psutil==7.2.2
ptyprocess==0.7.0
pure-eval==0.2.3
pycparser==3.0
pygments==2.20.0
python-dateutil==2.9.0.post0
python-json-logger==4.1.0
pyviz-comms==3.0.6
pyyaml==6.0.3
pyzmq==27.1.0
referencing==0.37.0
requests==2.33.1
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==82.0.1
six==1.17.0
soupsieve==2.8.3
stack-data==0.6.3
terminado==0.18.1
tinycss2==1.4.0
tornado==6.5.5
tqdm==4.67.3
traitlets==5.14.3
typing-extensions==4.15.0
tzdata==2026.1
uc-micro-py==2.0.0
uri-template==1.3.0
urllib3==2.6.3
wcwidth==0.6.0
webcolors==25.10.0
webencodings==0.5.1
websocket-client==1.9.0
widgetsnbextension==4.0.15
xarray==2026.2.0
xyzservices==2026.3.0

Description of expected behavior and the observed behavior

I have an xarray DataArray where one of the coordinates has time zone information. When I plot the data as a line plot using .hvplot.line, the axis is correct. However, if I plot the data using .hvplot.image or .hvplot.quadmesh, the time zone information is dropped, and the axis is displayed as UTC.

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

import xarray as xr
import hvplot.xarray

data = xr.DataArray(
    [[1, 2, 1, 2], [2, 3, 2, 1]],
    coords=[
        ("number", [0.0, 0.1]),
        ("time", xr.date_range("2026-04-07 00:00", "2026-04-07 03:00", periods=4, tz="Europe/Helsinki")),
    ],
    name="my data",
)


# works OK
data.hvplot.line(x="time")

# time zone information is missing
data.hvplot.image(x="time")
data.hvplot.quadmesh(x="time")

Stack traceback and/or browser JavaScript console output

For the quadmesh case, there is a warning:

.../.venv/lib/python3.13/site-packages/bokeh/util/serialization.py:247: UserWarning: no explicit representation of timezones available for np.datetime64
  return convert(array.astype("datetime64[us]"))

Although in my main notebook where I encountered this initially, this warning didn't appear.

Screenshots or screencasts of the bug in action

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions