I’m new to both Vega Lite and VegaLite.jl, and I’m confused about exactly how is vlplot
supposed to work. The VegaLite documentation seems to consist mostly of examples and lacks a more systematic approach to documentation, so I’m having a hard time figuring out the thing that’s confusing me here. (The @vlplot
macro is confusing me even more than vlplot
, because it doesn’t use Julia syntax, so I would prefer not to use it.)
This is the first example for the “Point” Vega Lite “mark” in the docs, it plots a dot plot:
{
"data": {"url": "data/movies.json"},
"mark": "point",
"encoding": {
"x": {"field": "IMDB Rating", "type": "quantitative"}
}
}
This is my initial snippet, basically an attempt at a straightforward adaptation of the dot plot example from Vega Lite to vlplot
:
using IndexedTables, VegaLite
data = Float64[3.3, 3.4, 3.41, 3.9]
tab = table((index = (1:length(data)), values = data), pkey=:index, presorted=true)
pl = vlplot(data = tab, mark = :point, encoding = (x = (field = :values, type = :quantitative)))
The above produces just a single dot instead of dot plot, even though it seems like it should “naturally” work. But the below correction works as expected:
pl = vlplot(data = tab, mark = :point, x = (field = :values, type = :quantitative))
From this I would conclude that a Vega Lite encoding has to be specified “inline” in VegaLite.jl, except that the VegaLite documentation actually has some examples where @vlplot
is given an encoding
argument just like here. (E.g., here: The @vlplot command · VegaLite.jl)
So I don’t really get what’s wrong with my initial example. Can somebody help me understand?