我正在尝试创建具有多个类别的图,并为每个类别创建一个图。
由于有许多数据点,因此我正在使用datashade。但是datashade忽略了我为这些绘图设置的宽度和高度。
使用datashader时如何保持已经为绘图设置的宽度和高度?
以下是示例代码:
# import libraries
import numpy as np
import pandas as pd
import hvplot
import hvplot.pandas
import holoviews as hv
hv.extension('bokeh')
from holoviews.operation.datashader import datashade
# create some sample data
sample_scatter1 = np.random.normal(loc=0.0, size=50)
sample_scatter2 = np.random.normal(loc=300., size=50)
sample_category = np.random.choice(2, size=50)
demo_df = pd.DataFrame({
'col1': sample_scatter1,
'col2': sample_scatter2,
'category': sample_category,
})
hv_demo_df = hv.Dataset(demo_df, kdims=['col1', 'category'], vdims=['col2'])
# when i plot without datashade, width works fine
# but with using datashade here i lose the width that i set
datashade(hv_demo_df.to.scatter().opts(width=1000).layout('category')).cols(1)
答案 0 :(得分:1)
这里的问题是,应用操作可以对元素执行任何变换,这意味着在应用变换后,许多选项不一定有效。因此,操作通常最终会删除应用于元素的选项,因此有必要在事实之后重新应用它们。在您的示例中,这意味着您必须这样做:
hv_demo_df = hv.Dataset(demo_df, kdims=['col1', 'category'], vdims=['col2'])
datashade(hv_demo_df.to.scatter().layout('category')).opts(hv.opts.RGB(width=1000)).cols(1)
我同意这不是理想的选择,我们已经讨论过确保至少转移输入和输出元素共享的所有选项。这也与this issue有关,它暗示操作(如datashade)也应使用应用于该元素的任何选项。