Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slightly corrupted images when using datashade with bokeh backend (but not with plotly) #5866

Open
hrbigelow opened this issue Aug 27, 2023 · 10 comments
Labels
tag: backend: bokeh type: bug Something isn't correct or isn't working

Comments

@hrbigelow
Copy link

(Issue also illustrated on discourse)

Using:

bokeh 3.2.2
plotly 5.16.1
datashader 0.15.2
holoviews 1.17.1

With the following setup:

import numpy as np
import pandas as pd
import holoviews as hv
from holoviews.operation.datashader import datashade

N = 10
x = np.linspace(0, 1000, N)
y = np.sin(x / 30)
df = pd.DataFrame(dict(x=x,y=y))

When I do:

hv.extension('bokeh')
opts = hv.opts.RGB(width=900, height=400)
img = datashade(hv.Path(df, kdims=['x','y']), width=900, height=400)
img.opts(opts)
img

I see a line with artifacts. This is some sort of bug (see below). I've stepped through a lot of the code in holoviews/plotting/bokeh/element and other files, for example. Unfortunately it seems too complex for me to debug. But, I'm thinking there is some bug in the downstream processing, since the output images that come directly from datashader look perfect (see below)

image

Any help would be much appreciated. As it is, this is unfortunately not usable quality, it is too visually distracting.

When I instead use the plotly backend but everything else the same:

hv.extension('plotly')
opts = hv.opts.RGB(width=900, height=400)
img = datashade(hv.Path(df, kdims=['x','y']), width=900, height=400)
img.opts(opts)
img

The line has no artifacts:

image

Finally, I can confirm that this is not an issue with datashader image generation itself. When I do:

cvs = ds.Canvas(x_range=[0, 1000], y_range=[-1,1], 
         plot_height=400, plot_width=900)
agg = cvs.line(df, 'x', 'y', agg=ds.any())
tf.shade(agg)

I see a perfectly rendered line plot:

image

Thanks in advance!

@hoxbro
Copy link
Member

hoxbro commented Aug 28, 2023

Running the code on my computer does not seem to give the corrupted image:
image

Can I get you to paste the output of hv.show_versions()

@hrbigelow
Copy link
Author

Thank you Hoxbro. Sure, I see:

Python              :  3.11.4 | packaged by conda-forge | (main, Jun 10 2023, 18:08:17) [GCC 12.2.0]
Operating system    :  Linux-5.15.0-78-generic-x86_64-with-glibc2.35
Panel comms         :  default

holoviews           :  1.17.1

bokeh               :  3.2.2
colorcet            :  3.0.1
cudf                :  -
dask                :  2023.8.1
datashader          :  0.15.2
geoviews            :  -
hvplot              :  0.8.4
ibis                :  -
IPython             :  8.14.0
jupyter_bokeh       :  -
jupyterlab          :  4.0.5
matplotlib          :  3.7.2
networkx            :  3.1
notebook            :  7.0.2
numba               :  0.57.1
numpy               :  1.24.4
pandas              :  2.0.3
panel               :  1.2.1
param               :  1.13.0
PIL                 :  10.0.0
plotly              :  5.16.1
pyarrow             :  12.0.1
scipy               :  1.11.2
skimage             :  0.21.0
spatialpandas       :  -
streamz             :  0.6.4
xarray              :  2023.8.0

@hoxbro
Copy link
Member

hoxbro commented Aug 28, 2023

I can't see any obvious reasons why it does not work. Can you paste the output of conda list ?

For what it is worth, I created a new environment and got.

Python              :  3.11.5 | packaged by conda-forge | (main, Aug 27 2023, 03:34:09) [GCC 12.3.0]
Operating system    :  Linux-6.4.6-76060406-generic-x86_64-with-glibc2.35
Panel comms         :  default

holoviews           :  1.17.1

bokeh               :  3.2.2
colorcet            :  3.0.1
cudf                :  -
dask                :  2023.8.1
datashader          :  0.15.2
geoviews            :  -
hvplot              :  -
ibis                :  -
IPython             :  8.14.0
jupyter_bokeh       :  -
jupyterlab          :  4.0.5
matplotlib          :  3.7.2
networkx            :  -
notebook            :  7.0.2
numba               :  0.57.1
numpy               :  1.24.4
pandas              :  2.0.3
panel               :  1.2.1
param               :  1.13.0
PIL                 :  10.0.0
plotly              :  -
pyarrow             :  13.0.0
scipy               :  1.11.2
skimage             :  -
spatialpandas       :  -
streamz             :  -
xarray              :  2023.8.0

@hrbigelow
Copy link
Author

Wow - that's a very short list. I unfortunately never got very good at Conda or understanding how dependencies are controlled. In any case, here is my conda list output:

# packages in environment at /home/henry/miniconda3/envs/datashader:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
affine                    2.4.0              pyhd8ed1ab_0    conda-forge
aiohttp                   3.8.5           py311h459d7ec_0    conda-forge
aiosignal                 1.3.1              pyhd8ed1ab_0    conda-forge
alsa-lib                  1.2.9                hd590300_0    conda-forge
anaconda-client           1.12.0          py311h06a4308_0  
anaconda-project          0.11.1             pyhd8ed1ab_0    conda-forge
anyio                     3.7.1              pyhd8ed1ab_0    conda-forge
aom                       3.5.0                h27087fc_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0          py311hd4cff14_3    conda-forge
arrow                     1.2.3              pyhd8ed1ab_0    conda-forge
asttokens                 2.2.1              pyhd8ed1ab_0    conda-forge
async-lru                 2.0.4              pyhd8ed1ab_0    conda-forge
async-timeout             4.0.3              pyhd8ed1ab_0    conda-forge
atk-1.0                   2.38.0               hd4edc92_1    conda-forge
attr                      2.5.1                h166bdaf_1    conda-forge
attrs                     23.1.0             pyh71513ae_1    conda-forge
aws-c-auth                0.7.3                h28f7589_1    conda-forge
aws-c-cal                 0.6.1                hc309b26_1    conda-forge
aws-c-common              0.9.0                hd590300_0    conda-forge
aws-c-compression         0.2.17               h4d4d85c_2    conda-forge
aws-c-event-stream        0.3.1                h2e3709c_4    conda-forge
aws-c-http                0.7.11               h00aa349_4    conda-forge
aws-c-io                  0.13.32              he9a53bd_1    conda-forge
aws-c-mqtt                0.9.4                hb447be9_0    conda-forge
aws-c-s3                  0.3.14               hf3aad02_1    conda-forge
aws-c-sdkutils            0.1.12               h4d4d85c_1    conda-forge
aws-checksums             0.1.17               h4d4d85c_1    conda-forge
aws-crt-cpp               0.23.0               he000723_1    conda-forge
aws-sdk-cpp               1.10.57             hd831e9c_20    conda-forge
babel                     2.12.1             pyhd8ed1ab_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                pyhd8ed1ab_3    conda-forge
backports.functools_lru_cache 1.6.5              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.12.2             pyha770c72_0    conda-forge
bleach                    6.0.0              pyhd8ed1ab_0    conda-forge
blinker                   1.6.2              pyhd8ed1ab_0    conda-forge
blosc                     1.21.4               h0f2a231_0    conda-forge
bokeh                     3.2.2              pyhd8ed1ab_0    conda-forge
boost-cpp                 1.78.0               h6582d0a_3    conda-forge
brotli                    1.0.9                h166bdaf_9    conda-forge
brotli-bin                1.0.9                h166bdaf_9    conda-forge
brotli-python             1.0.9           py311ha362b79_9    conda-forge
brunsli                   0.1                  h9c3ff4c_0    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.19.1               hd590300_0    conda-forge
c-blosc2                  2.10.2               hb4ffafa_0    conda-forge
ca-certificates           2023.7.22            hbcca054_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cachetools                5.3.1              pyhd8ed1ab_0    conda-forge
cairo                     1.16.0            hbbf8b49_1016    conda-forge
cartopy                   0.22.0          py311h320fe9a_0    conda-forge
certifi                   2023.7.22          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1          py311h409f033_3    conda-forge
cfitsio                   4.3.0                hbdc6101_0    conda-forge
charls                    2.4.2                h59595ed_0    conda-forge
charset-normalizer        3.2.0              pyhd8ed1ab_0    conda-forge
click                     8.1.7           unix_pyh707e725_0    conda-forge
click-plugins             1.1.1                      py_0    conda-forge
cligj                     0.7.2              pyhd8ed1ab_1    conda-forge
cloudpickle               2.2.1              pyhd8ed1ab_0    conda-forge
clyent                    1.2.2                      py_1    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
colorcet                  3.0.1              pyhd8ed1ab_0    conda-forge
comm                      0.1.4              pyhd8ed1ab_0    conda-forge
conda-pack                0.7.1              pyhd8ed1ab_0    conda-forge
conda-package-handling    2.2.0              pyh38be061_0    conda-forge
conda-package-streaming   0.9.0              pyhd8ed1ab_0    conda-forge
contourpy                 1.1.0           py311h9547e67_0    conda-forge
cramjam                   2.7.0           py311h46250e7_0    conda-forge
cryptography              41.0.3          py311h63ff55d_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
cytoolz                   0.12.2          py311h459d7ec_0    conda-forge
dask                      2023.8.1           pyhd8ed1ab_0    conda-forge
dask-core                 2023.8.1           pyhd8ed1ab_0    conda-forge
datashader                0.15.2             pyhd8ed1ab_0    conda-forge
datashape                 0.5.4                      py_1    conda-forge
dav1d                     1.2.1                hd590300_0    conda-forge
dbus                      1.13.6               h5008d03_3    conda-forge
debugpy                   1.6.8           py311hb755f60_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
distributed               2023.8.1           pyhd8ed1ab_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
exceptiongroup            1.1.3              pyhd8ed1ab_0    conda-forge
executing                 1.2.0              pyhd8ed1ab_0    conda-forge
expat                     2.5.0                hcb278e6_1    conda-forge
fastparquet               2023.7.0        py311h1f0f07a_0    conda-forge
fire                      0.5.0              pyhd8ed1ab_0    conda-forge
flit-core                 3.9.0              pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.2               h14ed4e7_0    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.42.1          py311h459d7ec_0    conda-forge
fqdn                      1.5.1              pyhd8ed1ab_0    conda-forge
freetype                  2.12.1               hca18f0e_1    conda-forge
freexl                    1.0.6                h166bdaf_1    conda-forge
fribidi                   1.0.10               h36c2ea0_0    conda-forge
frozenlist                1.4.0           py311h459d7ec_0    conda-forge
fsspec                    2023.6.0           pyh1a96a4e_0    conda-forge
gcsfs                     2023.6.0           pyhd8ed1ab_0    conda-forge
gdk-pixbuf                2.42.10              h6b639ba_2    conda-forge
geos                      3.12.0               h59595ed_0    conda-forge
geotiff                   1.7.1               h22adcc9_11    conda-forge
gettext                   0.21.1               h27087fc_0    conda-forge
gflags                    2.2.2             he1b5a44_1004    conda-forge
giflib                    5.2.1                h0b41bf4_3    conda-forge
glib                      2.76.4               hfc55251_0    conda-forge
glib-tools                2.76.4               hfc55251_0    conda-forge
glog                      0.6.0                h6f12383_0    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
google-api-core           2.11.1             pyhd8ed1ab_0    conda-forge
google-auth               2.22.0                   pypi_0    pypi
google-auth-oauthlib      1.0.0              pyhd8ed1ab_1    conda-forge
google-cloud-core         2.3.3              pyhd8ed1ab_0    conda-forge
google-cloud-storage      2.10.0             pyh1a96a4e_0    conda-forge
google-crc32c             1.5.0                    pypi_0    pypi
google-resumable-media    2.5.0              pyhd8ed1ab_0    conda-forge
googleapis-common-protos  1.60.0             pyhd8ed1ab_0    conda-forge
graphite2                 1.3.13            h58526e2_1001    conda-forge
graphviz                  8.1.0                h28d9a01_0    conda-forge
grpcio                    1.56.2          py311ha6695c7_1    conda-forge
gst-plugins-base          1.22.5               hf7dbed1_0    conda-forge
gstreamer                 1.22.5               h98fc4e7_0    conda-forge
gtk2                      2.24.33              h90689f9_2    conda-forge
gts                       0.7.6                h977cf35_4    conda-forge
harfbuzz                  7.3.0                hdb3a94d_0    conda-forge
hdf4                      4.2.15               h501b40f_6    conda-forge
hdf5                      1.14.2          nompi_h4f84152_100    conda-forge
holoviews                 1.17.1                     py_0    pyviz
hvplot                    0.8.4              pyhd8ed1ab_1    conda-forge
icu                       72.1                 hcb278e6_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
imagecodecs               2023.8.12       py311h67b54e4_0    conda-forge
imageio                   2.31.1             pyh24c5eb1_0    conda-forge
importlib-metadata        6.8.0              pyha770c72_0    conda-forge
importlib_metadata        6.8.0                hd8ed1ab_0    conda-forge
importlib_resources       6.0.1              pyhd8ed1ab_0    conda-forge
ipykernel                 6.25.1             pyh71e2992_0    conda-forge
ipympl                    0.9.3              pyhd8ed1ab_0    conda-forge
ipython                   8.14.0             pyh41d4057_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                8.1.0              pyhd8ed1ab_0    conda-forge
isoduration               20.11.0            pyhd8ed1ab_0    conda-forge
jedi                      0.19.0             pyhd8ed1ab_0    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
json-c                    0.17                 h7ab15ed_0    conda-forge
json5                     0.9.14             pyhd8ed1ab_0    conda-forge
jsonpointer               2.0                        py_0    conda-forge
jsonschema                4.19.0             pyhd8ed1ab_1    conda-forge
jsonschema-specifications 2023.7.1           pyhd8ed1ab_0    conda-forge
jsonschema-with-format-nongpl 4.19.0             pyhd8ed1ab_1    conda-forge
jupyter                   1.0.0           py311h38be061_8    conda-forge
jupyter-lsp               2.2.0              pyhd8ed1ab_0    conda-forge
jupyter_client            8.3.0              pyhd8ed1ab_0    conda-forge
jupyter_console           6.6.3              pyhd8ed1ab_0    conda-forge
jupyter_core              5.3.1           py311h38be061_0    conda-forge
jupyter_events            0.7.0              pyhd8ed1ab_2    conda-forge
jupyter_server            2.7.1              pyhd8ed1ab_0    conda-forge
jupyter_server_terminals  0.4.4              pyhd8ed1ab_1    conda-forge
jupyterlab                4.0.5              pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_server         2.24.0             pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        3.0.8              pyhd8ed1ab_0    conda-forge
jxrlib                    1.1                  h7f98852_2    conda-forge
kealib                    1.5.1                hcd42e92_5    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.4           py311h4dd048b_1    conda-forge
krb5                      1.21.2               h659d440_0    conda-forge
lame                      3.100             h166bdaf_1003    conda-forge
lazy_loader               0.3                pyhd8ed1ab_0    conda-forge
lcms2                     2.15                 haa2dc70_1    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libabseil                 20230125.3      cxx17_h59595ed_0    conda-forge
libaec                    1.0.6                hcb278e6_1    conda-forge
libarchive                3.6.2                h039dbb9_1    conda-forge
libarrow                  12.0.1           hb9dc469_9_cpu    conda-forge
libavif                   0.11.1               h8182462_2    conda-forge
libblas                   3.9.0           17_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_9    conda-forge
libbrotlidec              1.0.9                h166bdaf_9    conda-forge
libbrotlienc              1.0.9                h166bdaf_9    conda-forge
libcap                    2.69                 h0f662aa_0    conda-forge
libcblas                  3.9.0           17_linux64_openblas    conda-forge
libclang                  15.0.7          default_h7634d5b_3    conda-forge
libclang13                15.0.7          default_h9986a30_3    conda-forge
libcrc32c                 1.1.2                h9c3ff4c_0    conda-forge
libcups                   2.3.3                h4637d8d_4    conda-forge
libcurl                   8.2.1                hca28451_0    conda-forge
libdeflate                1.18                 h0b41bf4_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.12               hf998b51_1    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libflac                   1.4.3                h59595ed_0    conda-forge
libgcc-ng                 13.1.0               he5830b7_0    conda-forge
libgcrypt                 1.10.1               h166bdaf_0    conda-forge
libgd                     2.3.3                hfa28ad5_6    conda-forge
libgdal                   3.7.1                h3d2b3c2_7    conda-forge
libgfortran-ng            13.1.0               h69a702a_0    conda-forge
libgfortran5              13.1.0               h15d22d2_0    conda-forge
libglib                   2.76.4               hebfc3b9_0    conda-forge
libgomp                   13.1.0               he5830b7_0    conda-forge
libgoogle-cloud           2.12.0               h840a212_1    conda-forge
libgpg-error              1.47                 h71f35ed_0    conda-forge
libgrpc                   1.56.2               h3905398_1    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
libjpeg-turbo             2.1.5.1              h0b41bf4_0    conda-forge
libkml                    1.3.0             h37653c0_1015    conda-forge
liblapack                 3.9.0           17_linux64_openblas    conda-forge
libllvm14                 14.0.6               hcd5def8_4    conda-forge
libllvm15                 15.0.7               h5cf9203_3    conda-forge
libnetcdf                 4.9.2           nompi_h9db66fd_110    conda-forge
libnghttp2                1.52.0               h61bc06f_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libnuma                   2.0.16               h0b41bf4_1    conda-forge
libogg                    1.3.4                h7f98852_1    conda-forge
libopenblas               0.3.23          pthreads_h80387f5_0    conda-forge
libopus                   1.3.1                h7f98852_1    conda-forge
libpng                    1.6.39               h753d276_0    conda-forge
libpq                     15.4                 hfc447b1_0    conda-forge
libprotobuf               4.23.3               hd1fb520_0    conda-forge
librsvg                   2.56.3               h98fae49_0    conda-forge
librttopo                 1.1.0               hb58d41b_14    conda-forge
libsndfile                1.2.2                hbc2eb40_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libspatialite             5.0.1               h15f6e67_28    conda-forge
libsqlite                 3.42.0               h2797004_0    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-ng              13.1.0               hfd8a6a1_0    conda-forge
libsystemd0               254                  h3516f8a_0    conda-forge
libthrift                 0.18.1               h8fd135c_2    conda-forge
libtiff                   4.5.1                h8b53f26_0    conda-forge
libtool                   2.4.7                h27087fc_0    conda-forge
libutf8proc               2.8.0                h166bdaf_0    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libvorbis                 1.3.7                h9c3ff4c_0    conda-forge
libwebp                   1.3.1                hbf2b3c1_0    conda-forge
libwebp-base              1.3.1                hd590300_0    conda-forge
libxcb                    1.15                 h0b41bf4_0    conda-forge
libxkbcommon              1.5.0                h5d7e998_3    conda-forge
libxml2                   2.11.5               h0d562d8_0    conda-forge
libzip                    1.10.0               h2629f0a_0    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
libzopfli                 1.0.3                h9c3ff4c_0    conda-forge
linkify-it-py             2.0.0              pyhd8ed1ab_0    conda-forge
llvmlite                  0.40.1          py311ha6695c7_0    conda-forge
locket                    1.0.0              pyhd8ed1ab_0    conda-forge
lz4                       4.3.2           py311h9f220a4_0    conda-forge
lz4-c                     1.9.4                hcb278e6_0    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
markdown                  3.4.4              pyhd8ed1ab_0    conda-forge
markdown-it-py            3.0.0              pyhd8ed1ab_0    conda-forge
markupsafe                2.1.3           py311h459d7ec_0    conda-forge
matplotlib                3.7.2           py311h38be061_0    conda-forge
matplotlib-base           3.7.2           py311h54ef318_0    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mdit-py-plugins           0.4.0              pyhd8ed1ab_0    conda-forge
mdurl                     0.1.0              pyhd8ed1ab_0    conda-forge
mistune                   3.0.1              pyhd8ed1ab_0    conda-forge
mpg123                    1.31.3               hcb278e6_0    conda-forge
msgpack-python            1.0.5           py311ha3edf6b_0    conda-forge
multidict                 6.0.4           py311h2582759_0    conda-forge
multipledispatch          0.6.0                      py_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
mysql-common              8.0.33               hf1915f5_2    conda-forge
mysql-libs                8.0.33               hca2cd23_2    conda-forge
nbclient                  0.8.0              pyhd8ed1ab_0    conda-forge
nbconvert                 7.7.4              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.7.4              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.7.4              pyhd8ed1ab_0    conda-forge
nbformat                  5.9.2              pyhd8ed1ab_0    conda-forge
ncurses                   6.4                  hcb278e6_0    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
networkx                  3.1                pyhd8ed1ab_0    conda-forge
notebook                  7.0.2              pyhd8ed1ab_0    conda-forge
notebook-shim             0.2.3              pyhd8ed1ab_0    conda-forge
nspr                      4.35                 h27087fc_0    conda-forge
nss                       3.92                 h1d7d5a4_0    conda-forge
numba                     0.57.1          py311h96b013e_0    conda-forge
numpy                     1.24.4          py311h64a7726_0    conda-forge
oauthlib                  3.2.2              pyhd8ed1ab_0    conda-forge
openjpeg                  2.5.0                hfec8fc6_2    conda-forge
openssl                   3.1.2                hd590300_0    conda-forge
orc                       1.9.0                h385abfd_1    conda-forge
overrides                 7.4.0              pyhd8ed1ab_0    conda-forge
packaging                 23.1               pyhd8ed1ab_0    conda-forge
pandas                    2.0.3           py311h320fe9a_1    conda-forge
pandoc                    3.1.3                h32600fe_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
panel                     1.2.1              pyhd8ed1ab_0    conda-forge
pango                     1.50.14              heaa33ce_1    conda-forge
param                     1.13.0             pyh1a96a4e_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
partd                     1.4.0              pyhd8ed1ab_0    conda-forge
patsy                     0.5.3              pyhd8ed1ab_0    conda-forge
pcre2                     10.40                hc3806b6_0    conda-forge
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    10.0.0          py311h0b84326_0    conda-forge
pip                       23.2.1             pyhd8ed1ab_0    conda-forge
pixman                    0.40.0               h36c2ea0_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
platformdirs              3.10.0             pyhd8ed1ab_0    conda-forge
plotly                    5.16.1             pyhd8ed1ab_0    conda-forge
ply                       3.11                       py_1    conda-forge
pooch                     1.7.0              pyha770c72_3    conda-forge
poppler                   23.08.0              hd18248d_0    conda-forge
poppler-data              0.4.12               hd8ed1ab_0    conda-forge
postgresql                15.4                 h8972f4a_0    conda-forge
proj                      9.2.1                ha643af7_0    conda-forge
prometheus_client         0.17.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.39             pyha770c72_0    conda-forge
prompt_toolkit            3.0.39               hd8ed1ab_0    conda-forge
protobuf                  4.24.1                   pypi_0    pypi
psutil                    5.9.5           py311h2582759_0    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pulseaudio-client         16.1                 hb77b528_4    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pyarrow                   12.0.1          py311h39c9aba_9_cpu    conda-forge
pyasn1                    0.5.0                    pypi_0    pypi
pyasn1-modules            0.3.0                    pypi_0    pypi
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pyct                      0.4.6                      py_0    conda-forge
pyct-core                 0.4.6                      py_0    conda-forge
pygments                  2.16.1             pyhd8ed1ab_0    conda-forge
pyjwt                     2.8.0              pyhd8ed1ab_0    conda-forge
pyopenssl                 23.2.0             pyhd8ed1ab_1    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyproj                    3.6.0           py311ha169711_1    conda-forge
pyqt                      5.15.9          py311hf0fb5b6_4    conda-forge
pyqt5-sip                 12.12.2         py311hb755f60_4    conda-forge
pyshp                     2.3.1              pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.11.4          hab00c5b_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.18.0             pyhd8ed1ab_0    conda-forge
python-graphviz           0.20.1             pyh22cad53_0    conda-forge
python-json-logger        2.0.7              pyhd8ed1ab_0    conda-forge
python-snappy             0.6.1           py311h48ad69a_0    conda-forge
python-tzdata             2023.3             pyhd8ed1ab_0    conda-forge
python_abi                3.11                    3_cp311    conda-forge
pytz                      2023.3             pyhd8ed1ab_0    conda-forge
pyu2f                     0.1.5              pyhd8ed1ab_0    conda-forge
pyviz_comms               3.0.0              pyhd8ed1ab_0    conda-forge
pywavelets                1.4.1           py311hcb2cf0a_0    conda-forge
pyyaml                    6.0.1           py311h459d7ec_0    conda-forge
pyzmq                     25.1.1          py311h75c88c4_0    conda-forge
qt-main                   5.15.8              h7fe3ca9_15    conda-forge
qtconsole                 5.4.3              pyhd8ed1ab_0    conda-forge
qtconsole-base            5.4.3              pyha770c72_0    conda-forge
qtpy                      2.3.1              pyhd8ed1ab_0    conda-forge
rasterio                  1.3.8           py311h41e4db2_0    conda-forge
rdma-core                 28.9                 h59595ed_1    conda-forge
re2                       2023.03.02           h8c504da_0    conda-forge
readline                  8.2                  h8228510_1    conda-forge
referencing               0.30.2             pyhd8ed1ab_0    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
requests-oauthlib         1.3.1              pyhd8ed1ab_0    conda-forge
requests-toolbelt         1.0.0              pyhd8ed1ab_0    conda-forge
rfc3339-validator         0.1.4              pyhd8ed1ab_0    conda-forge
rfc3986-validator         0.1.1              pyh9f0ad1d_0    conda-forge
rpds-py                   0.9.2           py311h46250e7_0    conda-forge
rsa                       4.9                pyhd8ed1ab_0    conda-forge
ruamel_yaml               0.15.80         py311hd4cff14_1008    conda-forge
s2n                       1.3.49               h06160fa_0    conda-forge
scikit-image              0.21.0          py311hb755f60_0    conda-forge
scipy                     1.11.2          py311h64a7726_0    conda-forge
send2trash                1.8.2              pyh41d4057_0    conda-forge
setuptools                68.1.2             pyhd8ed1ab_0    conda-forge
shapely                   2.0.1           py311he06c224_2    conda-forge
sip                       6.7.11          py311hb755f60_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.10               h9fff704_0    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
snuggs                    1.4.7                      py_0    conda-forge
sortedcontainers          2.4.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlite                    3.42.0               h2c6b66d_0    conda-forge
stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
statsmodels               0.14.0          py311h1f0f07a_1    conda-forge
streamvis                 0.1.0                    pypi_0    pypi
streamz                   0.6.4              pyh6c4a22f_0    conda-forge
tblib                     1.7.0              pyhd8ed1ab_0    conda-forge
tenacity                  8.2.3              pyhd8ed1ab_0    conda-forge
termcolor                 2.3.0              pyhd8ed1ab_0    conda-forge
terminado                 0.17.1             pyh41d4057_0    conda-forge
tifffile                  2023.8.12          pyhd8ed1ab_1    conda-forge
tiledb                    2.16.3               h84d19f0_1    conda-forge
tinycss2                  1.2.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
toolz                     0.12.0             pyhd8ed1ab_0    conda-forge
tornado                   6.3.3           py311h459d7ec_0    conda-forge
tqdm                      4.66.1             pyhd8ed1ab_0    conda-forge
traitlets                 5.9.0              pyhd8ed1ab_0    conda-forge
typing-extensions         4.7.1                hd8ed1ab_0    conda-forge
typing_extensions         4.7.1              pyha770c72_0    conda-forge
typing_utils              0.1.0              pyhd8ed1ab_0    conda-forge
tzcode                    2023c                h0b41bf4_0    conda-forge
tzdata                    2023c                h71feb2d_0    conda-forge
uc-micro-py               1.0.1              pyhd8ed1ab_0    conda-forge
ucx                       1.14.1               h4a2ce2d_3    conda-forge
uri-template              1.3.0              pyhd8ed1ab_0    conda-forge
urllib3                   1.26.16                  pypi_0    pypi
wcwidth                   0.2.6              pyhd8ed1ab_0    conda-forge
webcolors                 1.13               pyhd8ed1ab_0    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.6.2              pyhd8ed1ab_0    conda-forge
wheel                     0.41.2             pyhd8ed1ab_0    conda-forge
widgetsnbextension        4.0.8              pyhd8ed1ab_0    conda-forge
xarray                    2023.8.0           pyhd8ed1ab_0    conda-forge
xcb-util                  0.4.0                hd590300_1    conda-forge
xcb-util-image            0.4.0                h8ee46fc_1    conda-forge
xcb-util-keysyms          0.4.0                h8ee46fc_1    conda-forge
xcb-util-renderutil       0.3.9                hd590300_1    conda-forge
xcb-util-wm               0.4.1                h8ee46fc_1    conda-forge
xerces-c                  3.2.4                h8d71039_2    conda-forge
xkeyboard-config          2.39                 hd590300_0    conda-forge
xorg-kbproto              1.0.7             h7f98852_1002    conda-forge
xorg-libice               1.1.1                hd590300_0    conda-forge
xorg-libsm                1.2.4                h7391055_0    conda-forge
xorg-libx11               1.8.6                h8ee46fc_0    conda-forge
xorg-libxau               1.0.11               hd590300_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h0b41bf4_2    conda-forge
xorg-libxrender           0.9.11               hd590300_0    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h0b41bf4_1003    conda-forge
xorg-xf86vidmodeproto     2.3.1             h7f98852_1002    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xyzservices               2023.7.0           pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yarl                      1.9.2           py311h459d7ec_0    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zfp                       1.0.0                h27087fc_3    conda-forge
zict                      3.0.0              pyhd8ed1ab_0    conda-forge
zipp                      3.16.2             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               hd590300_5    conda-forge
zlib-ng                   2.0.7                h0b41bf4_0    conda-forge
zstandard                 0.19.0          py311haa97af0_2    conda-forge
zstd                      1.5.2                hfc55251_7    conda-forge

@hoxbro
Copy link
Member

hoxbro commented Aug 28, 2023

It was the output of hv.show_versions(), which is why it is so short 🙂

I can't see any clear problem with that list.

Can you try to create a new environment with:

conda create -n tmp_holoviews python=3.11 holoviews jupyterlab datashader
conda activate tmp_holoviews
jupyter lab

And from there create a new notebook with:

import holoviews as hv
import numpy as np
import pandas as pd
from holoviews.operation.datashader import datashade

N = 10
x = np.linspace(0, 1000, N)
y = np.sin(x / 30)
df = pd.DataFrame(dict(x=x, y=y))

hv.extension("bokeh")
opts = hv.opts.RGB(width=900, height=400)
img = datashade(hv.Path(df, kdims=["x", "y"]), width=900, height=400)
img.opts(opts)
img

What is your zoom level in your browser?

@hrbigelow
Copy link
Author

Interesting! Okay, I did exactly the steps described above, but I see the artifact in Chrome, but Firefox there is no artifact.

(I checked that my zoom level in Chrome is 100%. In fact I checked zoom levels from 50% to 200% and the artifact is there no matter what)

Chrome: Version 115.0.5790.170 (Official Build) (64-bit)

image

Firefox: 116.0.3 (64-bit) Mozilla Firefox Snap for Ubuntu canonical-002 - 1.0

image

@jbednar
Copy link
Member

jbednar commented Aug 28, 2023

For me on Chrome the artifact is always present, including across zoom levels, except that unless I completely hallucinated it, the first time I ran the OP's code there was no artifact. I don't mean the first time in a session, or the first time executing a notebook cell, I mean chronologically the first time. I was completely unable to reproduce that correct output ever again even after restarting everything I could think to restart, so I decided I had been confused somehow, but @hoxbro , at least please check that you get the correct output after several re-executions of that cell. Here's the output for me.

image

@hrbigelow
Copy link
Author

This is likely then a bug in the frontend code specific to Chrome. Is there some way to save the image just before it gets sent to the frontend? Maybe then I could inspect it and see if it contains the artifact. If it doesn''t, then I suspect it is being resized by a few pixels height and width in the javascript code. (But, I looked at devtools and couldn't figure out if it was or not, since the whole thing is made into one composite image with border and bokeh toolbars and axes etc.

@hoxbro
Copy link
Member

hoxbro commented Aug 28, 2023

I can recreate it in Google Chrome (I was using Firefox).

I think your suspicions are very likely culprits, but I don't at the top of my head know how to test it. I will try to investigate it later this week.

@hoxbro hoxbro added type: bug Something isn't correct or isn't working tag: backend: bokeh labels Aug 28, 2023
@hrbigelow
Copy link
Author

Great, thanks @hoxbro and @jbednar for checking it out!

@hoxbro hoxbro added this to the 1.18.0 milestone Oct 4, 2023
@hoxbro hoxbro removed this from the 1.18.0 milestone Nov 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tag: backend: bokeh type: bug Something isn't correct or isn't working
Projects
None yet
Development

No branches or pull requests

3 participants