Skip to content

pn.widgets not working in a list  #697

@sophiamyang

Description

@sophiamyang

Hi, I'm trying out the hvplot .interactive. I got TypeError: 'RadioButtonGroup' object is not callable for the following code, I think it's because I can't write my xaxis in a list. It works if I change .groupby(['origin', xaxis]) to .groupby(xaxis), but it'd be nice if pn.widgets can work in a list. I'd really appreciate some help. Thanks!

from bokeh.sampledata.autompg import autompg_clean as df
import hvplot.pandas
import panel as pn
import holoviews as hv
hv.extension('bokeh')
idf = df.interactive()
cylinders = pn.widgets.IntSlider(start=4, end=8, step=2)
mfr = pn.widgets.ToggleGroup(options=['ford', 'chevrolet', 'plymouth', 'honda', 'sbaru', 'volkswagen'], 
                             value=['ford', 'chevrolet', 'plymouth', 'honda', 'sbaru', 'volkswagen'])
xaxis = pn.widgets.RadioButtonGroup(name='X axis', options=['mpg', 'yr'])
yaxis = pn.widgets.RadioButtonGroup(name='Y axis', options=['hp', 'weight'])

ipipeline = (
    idf[
        (idf.cyl == cylinders) & 
        (idf.mfr.isin(mfr))
    ]
    .groupby(['origin', xaxis])[yaxis].mean()
    .to_frame()
    .reset_index()
)

image

Traceback
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/n9/dr352bs550nck1fg2mz9vpn80000gn/T/ipykernel_46537/1739249479.py in <module>
     12 
     13 ipipeline = (
---> 14     idf[
     15         (idf.cyl == cylinders) &
     16         (idf.mfr.isin(mfr))

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/hvplot/interactive.py in __call__(self, *args, **kwargs)
    185                                        accessor=True)
    186             kwargs = dict(self._inherit_kwargs, **kwargs)
--> 187             clone = self._clone(method(*args, **kwargs), plot=self._method == 'plot')
    188         finally:
    189             self._method = None

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/hvplot/interactive.py in _clone(self, transform, plot, loc, center, dmap, **kwargs)
    114         depth = self._depth+1
    115         kwargs = dict(self._inherit_kwargs, **dict(self._kwargs, **kwargs))
--> 116         return type(self)(self._obj, transform, plot, depth,
    117                           loc, center, dmap, **kwargs)
    118 

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/hvplot/interactive.py in __init__(self, obj, transform, plot, depth, loc, center, dmap, inherit_kwargs, max_rows, **kwargs)
     84         self._kwargs = kwargs
     85         ds = hv.Dataset(self._obj)
---> 86         self._current = self._transform.apply(ds, keep_index=True, compute=False)
     87         self._init = True
     88 

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/holoviews/util/transform.py in apply(self, dataset, flat, expanded, ranges, all_values, keep_index, compute, strict)
    736             drange = ranges.get(eldim, {})
    737             drange = drange.get('combined', drange)
--> 738             data = self._apply_fn(dataset, data, fn, fn_name, args,
    739                                   kwargs, accessor, drange)
    740         drop_index = keep_index_for_compute and not keep_index

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/holoviews/util/transform.py in _apply_fn(self, dataset, data, fn, fn_name, args, kwargs, accessor, drange)
    634                         data = method(*args, **kwargs)
    635                     else:
--> 636                         raise e
    637         else:
    638             data = fn(*args, **kwargs)

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/holoviews/util/transform.py in _apply_fn(self, dataset, data, fn, fn_name, args, kwargs, accessor, drange)
    628             else:
    629                 try:
--> 630                     data = method(*args, **kwargs)
    631                 except Exception as e:
    632                     if 'axis' in kwargs:

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/frame.py in groupby(self, by, axis, level, as_index, sort, group_keys, squeeze, observed, dropna)
   7624         # error: Argument "squeeze" to "DataFrameGroupBy" has incompatible type
   7625         # "Union[bool, NoDefault]"; expected "bool"
-> 7626         return DataFrameGroupBy(
   7627             obj=self,
   7628             keys=by,

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/groupby/groupby.py in __init__(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, observed, mutated, dropna)
    886             from pandas.core.groupby.grouper import get_grouper
    887 
--> 888             grouper, exclusions, obj = get_grouper(
    889                 obj,
    890                 keys,

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/groupby/grouper.py in get_grouper(obj, key, axis, level, sort, observed, mutated, validate, dropna)
    875         # allow us to passing the actual Grouping as the gpr
    876         ping = (
--> 877             Grouping(
    878                 group_axis,
    879                 gpr,

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/groupby/grouper.py in __init__(self, index, grouper, obj, level, sort, observed, in_axis, dropna)
    533                 raise ValueError(f"Grouper for '{t}' not 1-dimensional")
    534 
--> 535             self.grouping_vector = index.map(self.grouping_vector)
    536 
    537             if not (

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/indexes/base.py in map(self, mapper, na_action)
   5505         from pandas.core.indexes.multi import MultiIndex
   5506 
-> 5507         new_values = self._map_values(mapper, na_action=na_action)
   5508 
   5509         attributes = self._get_attributes_dict()

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/core/base.py in _map_values(self, mapper, na_action)
    868 
    869         # mapper is a function
--> 870         new_values = map_f(values, mapper)
    871 
    872         return new_values

/opt/anaconda3/envs/p39/lib/python3.9/site-packages/pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

TypeError: 'RadioButtonGroup' object is not callable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions