Open
Description
In Jupyter notebook:
import plotly.graph_objects as go
go.Figure(go.Scatter(x=range(3), y=[3, 2, 1]))
Output:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-be3f9396b95f> in <module>
1 import plotly.graph_objects as go
----> 2 go.Figure(go.Scatter(x=range(3), y=[3, 2, 1]))
/usr/lib/python3.7/site-packages/plotly/graph_objs/__init__.py in __init__(self, arg, cliponaxis, connectgaps, customdata, customdatasrc, dx, dy, error_x, error_y, fill, fillcolor, groupnorm, hoverinfo, hoverinfosrc, hoverlabel, hoveron, hovertemplate, hovertemplatesrc, hovertext, hovertextsrc, ids, idssrc, legendgroup, line, marker, meta, metasrc, mode, name, opacity, orientation, r, rsrc, selected, selectedpoints, showlegend, stackgaps, stackgroup, stream, t, text, textfont, textposition, textpositionsrc, textsrc, tsrc, uid, uirevision, unselected, visible, x, x0, xaxis, xcalendar, xsrc, y, y0, yaxis, ycalendar, ysrc, **kwargs)
39689 self["visible"] = visible if visible is not None else _v
39690 _v = arg.pop("x", None)
> 39691 self["x"] = x if x is not None else _v
39692 _v = arg.pop("x0", None)
39693 self["x0"] = x0 if x0 is not None else _v
/usr/lib/python3.7/site-packages/plotly/basedatatypes.py in __setitem__(self, prop, value)
3351 # ### Handle simple property ###
3352 else:
-> 3353 self._set_prop(prop, value)
3354
3355 # Handle non-scalar case
/usr/lib/python3.7/site-packages/plotly/basedatatypes.py in _set_prop(self, prop, val)
3634 return
3635 else:
-> 3636 raise err
3637
3638 # val is None
/usr/lib/python3.7/site-packages/plotly/basedatatypes.py in _set_prop(self, prop, val)
3629 validator = self._validators.get(prop)
3630 try:
-> 3631 val = validator.validate_coerce(val)
3632 except ValueError as err:
3633 if self._skip_invalid:
/usr/lib/python3.7/site-packages/_plotly_utils/basevalidators.py in validate_coerce(self, v)
387 v = to_scalar_or_list(v)
388 else:
--> 389 self.raise_invalid_val(v)
390 return v
391
/usr/lib/python3.7/site-packages/_plotly_utils/basevalidators.py in raise_invalid_val(self, v, inds)
281 typ=type_str(v),
282 v=repr(v),
--> 283 valid_clr_desc=self.description(),
284 )
285 )
ValueError:
Invalid value of type 'builtins.range' received for the 'x' property of scatter
Received value: range(0, 3)
The 'x' property is an array that may be specified as a tuple,
list, numpy array, or pandas Series
Plotly is installed from Arch Linux AUR, based on version 4.1.0, built using this script.
Activity
nicolaskruchten commentedon Oct 4, 2019
That's correct, as per the error message:
range()
doesn't return a list in Python 3, it returns a generator.dniku commentedon Oct 4, 2019
Technically, this is not exactly the case:
range()
is a special object, not a generator. In particular, it has__len__()
and random access:Hence, it walks like a list and quacks like a list, so it should be relatively straightforward to add support for it.
gvwilson commentedon Jun 14, 2024
Hi - we are currently trying to tidy up Plotly's public repositories to help us focus our efforts on things that will help users most. Since this issue has been sitting for several years, I'm going to close it. If it's still a concern, we'd be grateful if you could open a new issue (with a short reproducible example if appropriate) so that we can add it to our backlog. Thanks for your help - @gvwilson
Treat range() as a simple array
[-]go.Scatter does not support range() as x kwarg[/-][+]support range() as keyword argument for go.Scatter[/+]