'How can we proramatically generate vega grammar JSON from vega-lite plot?

I am able to get vega json grammar on local installation of nodejs with vega-lite and vega-lite-api installed through npm as follows:

vl = require('vega-lite') 
vla = require('vega-lite-api') 
data = require('vega-datasets') 

const df2 = data['movies.json']()

const plot = vla.markBar().data(df2).encode(
    vla.x().fieldQ('IMDB_Rating').bin(true),
    vla.y().count()
  )

vega_lite_json = plot.toObject();
vega_json = vl.compile(plot.toObject()).spec;

However I am unable to make it work in Observablehq.

I am not able to do last line: vl.compile(...). This is what I have did:

vegalite = require("@observablehq/[email protected]")
vegalite.compile(plot.toObject()).spec;

It says: TypeError: vegalite.compile is not a function Here is link to my observablehq notebook cell executing vegalie.compile(...).

What I am doing wrong?



Solution 1:[1]

the vegalite compile option is located within the vl object, like this: vl.vegalite.compile(...)

Here's a notebook with the modified code: https://observablehq.com/@shan/untitled/6

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Shan Carter