ipyvega
ipyvega copied to clipboard
Allow ``VegaLite`` to accept either dict or JSON string?
This came up in our chat – I think it's a good idea.
Could look something like this:
class Vegalite(object):
def __init__(self, spec):
try:
spec = json.loads(spec)
except TypeError:
pass
if 'data' not in spec:
raise KeyError('No data provided with spec')
self.spec = utils.update(spec, DEFAULTS, overwrite=False)
Advantage is more flexible API & ability to out-source dataframe formatting stuff to Pandas; the disadvantage is that in some situations we'd add an extra string->dict->string cycle.
Related question: are there any situations in which a valid Vega/Vegalite JSON string would be broken through doing spec = json.dumps(json.loads(spec))?
Related question: are there any situations in which a valid Vega/Vegalite JSON string would be broken through doing spec = json.dumps(json.loads(spec))?
I can't think of anything that could cause issues.
Another idea: I think it would make sense to let the Vegalite class take an optional data argument, that it would then roll into the dict/string spec (rather than having that part in an external function).