Closed
Description
Similar to #131, but a new error:
>>> (mpg
... .pipe(ggplot)
... + geom_violin(aes(x='drv', y='hwy'))
... + facet_wrap('model')
... )
Traceback (most recent call last):
File "<ipython-input-9-f7c9f0b01077>", line 4, in <module>
+ facet_wrap('model')
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/IPython/core/displayhook.py", line 257, in __call__
format_dict, md_dict = self.compute_format_data(result)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/IPython/core/displayhook.py", line 151, in compute_format_data
return self.shell.display_formatter.format(result)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/IPython/core/formatters.py", line 180, in format
data = formatter(obj)
File "/Users/danb/.ipython/profile_default/ipython_config.py", line 201, in <lambda>
IPython.core.formatters.PlainTextFormatter.__call__ = lambda self, obj: pformat(obj) # Works, for now...
File "/Users/danb/.ipython/profile_default/ipython_config.py", line 192, in <lambda>
pformat = lambda x: _pp.pformat (x, width=_get_cols() or _get_cols_fallback_notebook, indent=2)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pprintpp/__init__.py", line 140, in pformat
return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pprintpp/__init__.py", line 298, in pformat
self._format(object, state)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pprintpp/__init__.py", line 474, in _format
orepr = repr(object)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/ggplot.py", line 95, in __repr__
self.draw()
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/ggplot.py", line 188, in draw
return self._draw(return_ggplot)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/ggplot.py", line 195, in _draw
self._build()
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/ggplot.py", line 303, in _build
layers.compute_statistic(layout)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/layer.py", line 87, in compute_statistic
l.compute_statistic(layout)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/layer.py", line 363, in compute_statistic
data = self.stat.compute_layer(data, params, layout)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/stats/stat.py", line 271, in compute_layer
return groupby_apply(data, 'PANEL', fn)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/utils.py", line 632, in groupby_apply
lst.append(func(d, *args, **kwargs))
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/stats/stat.py", line 269, in fn
return cls.compute_panel(pdata, pscales, **params)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/stats/stat_ydensity.py", line 130, in compute_panel
data['violinwidth'] = data['density']/data['density'].max()
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pandas/core/frame.py", line 2685, in __getitem__
return self._getitem_column(key)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pandas/core/frame.py", line 2692, in _getitem_column
return self._get_item_cache(key)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pandas/core/generic.py", line 2486, in _get_item_cache
values = self._data.get(item)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pandas/core/internals.py", line 4115, in get
loc = self.items.get_loc(item)
File "/Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 3065, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'density'
Jumping into a debugger shows data['density']
failing on an empty data
with no 'density'
column:
> /Users/danb/miniconda3/envs/bubo-features/lib/python3.6/site-packages/plotnine/stats/stat_ydensity.py(130)
125 @classmethod
126 def compute_panel(cls, data, scales, **params):
127 data = super(cls, cls).compute_panel(data, scales, **params)
128
129 if params['scale'] == 'area':
130 -> data['violinwidth'] = data['density']/data['density'].max()
131 elif params['scale'] == 'count':
132 data['violinwidth'] = (data['density'] /
133 data['density'].max() *
134 data['n']/data['n'].max())
135 elif params['scale'] == 'width':
136 data['violinwidth'] = data['scaled']
137 else:
138 msg = "Unknown scale value '{}'"
139 raise PlotnineError(msg.format(params['scale']))
140
141 return data
ipdb> args
cls = <class 'plotnine.stats.stat_ydensity.stat_ydensity'>
data = Empty DataFrame
Columns: [PANEL, group, x]
Index: []
scales = Bunch(x=<plotnine.scales.scale_xy.scale_x_discrete object at 0x11e8fcba8>, y=<plotnine.scales.scale_xy.scale_y_continuous object at 0x11c5440b8>)
params = {'geom': <plotnine.geoms.geom_violin.geom_violin object at 0x11c9080b8>, 'position': 'dodge', 'na_rm': False, 'adjust': 1, 'kernel': 'gau', 'n': 1024, 'trim': True, 'scale': 'area', 'bw': 'normal_reference', 'gridsize': None, 'clip': (-inf, inf), 'cut': 3}