Категория столбца агрегации не найдена - когда я устанавливаю datashader = True с Hvplot - PullRequest
0 голосов
/ 14 октября 2019

Я использую Hvplot для создания 2 диаграмм рассеяния в зависимости от категории, в которую попадают данные.
Поскольку точек данных очень много, я использую даташаду.
Мой график работает нормально, когда я не используюdatashade.

Однако, когда я установил datashade = True в своем коде ниже, я получаю следующую ошибку:

ПРЕДУПРЕЖДЕНИЕ: param.dynamic_operation: Callable повышенной "ValueError ('Категория столбца агрегации не найдена для элемента Scatter
[col1] (col2). Убедитесь, что агрегатор ссылается на существующее измерение.',) ". Вызывается как dynamic_operation (height = 300, scale = 1.0, width = 1200, x_range = None, y_range = None)

ValueError: Категория столбца агрегации не найдена для элемента Scatter [col1] (col2). Убедитесь, что агрегатор ссылается на существующее измерение.


Пример кода:

# 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,
})

# this works fine if I would set datashade=False, but with datashade=True it gives an error
demo_df.hvplot(
    kind='scatter', 
    x='col1', y='col2', 
    by='category', 
    subplots=True, 
    width=1200, 
    datashade=True
).cols(1)

1 Ответ

2 голосов
/ 15 октября 2019

Я думаю, что он пытается агрегировать по столбцу «категория», несмотря на тот факт, что измерение было сгруппировано. Я открыл эту проблему в hvPlot, чтобы, надеюсь, решить ее в ближайшее время. Пока вы можете использовать этот обходной путь:

demo_df.hvplot(
    kind='scatter', 
    x='col1', y='col2', 
    groupby='category',
    width=1200, 
    datashade=True
).layout().cols(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...