holoviz / holoviz/hvplot

Let color (of line plot) support dict values

Open
#831 1 comment 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.4k
Forks
124
Avg merge
1d 18h
Merged PRs (30d)
1

Description

## Request

Enable using a `dict` for `color` in `line` plots and what ever other types of plots where it makes sense.

## Motivation

I'm trying to improve the docstrings of hvPlot.

As the

- reference guide and docstrings is very sparse
- the code is hard to follow in an editor
- the code is not type annotated

It is very hard to figure out which types are supported.

So instead I assume hvPlot supports the same api and types as Pandas `.plot`.

Now I want to document the basic `by` and `color`. I cannot find any documentation in the docstrings, reference guide or with `hvplot.help('line')`.

So I look up https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.line.html and can see that they support `color` to be of type `dict`. The only way I can figure out if this is supported in hvPlot is to try it out.

It fails

```python
import hvplot.pandas

from bokeh.sampledata.iris import flowers as df
plot = df.hvplot.scatter(
x='sepal_length', y='sepal_width', by='species',
legend='top', height=400, width=400,
color={"setosa": "pink"}
)
```

```bash
TypeError: unhashable type: 'dict'
Traceback (most recent call last):
File "/opt/conda/lib/python3.9/site-packages/bokeh/application/handlers/code_runner.py", line 231, in run
exec(self._code, module.__dict__)
File "/home/jovyan/repos/private/hvplot/script.py", line 4, in
plot = df.hvplot.scatter(
File "/home/jovyan/repos/private/hvplot/hvplot/plotting/core.py", line 300, in scatter
return self(x, y, kind='scatter', **kwds)
File "/home/jovyan/repos/private/hvplot/hvplot/plotting/core.py", line 85, in __call__
return self._get_converter(x, y, kind, **kwds)(kind, x, y)
File "/home/jovyan/repos/private/hvplot/hvplot/converter.py", line 1228, in __call__
obj = method(x, y)
File "/home/jovyan/repos/private/hvplot/hvplot/converter.py", line 1641, in scatter
return self.chart(Scatter, x, y, data)
File "/home/jovyan/repos/private/hvplot/hvplot/converter.py", line 1599, in chart
return self.single_chart(element, x, y, data)
File "/home/jovyan/repos/private/hvplot/hvplot/converter.py", line 1488, in single_chart
if 'color' in opts_ and opts_['color'] in data.columns:
File "/opt/conda/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 4572, in __contains__
hash(key)
TypeError: unhashable type: 'dict'
```

I believe this should work because its powerful and users would expect it to work as it works for the reference Pandas `.plot` implementation.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.