The following code plots data on a single plot. The data is melted data with column names Symbol[:variable, :value, :time]
. I particularly want lines and points for each dataset… I know I can used filled=true
but I am also trying to learn Vegalite. The following code works, but it’s all one plot…
# plot the data using melted data
dfm |>
@vlplot(
x={
:time,
typ= "quantitative",
axis={
title="Time in Weeks"
}
},
y={:value, typ="quantitative", axis={title="Cumulative Cases"}},
width=400,
height=400,
color="variable:n",
) +
@vlplot(
mark={
typ="line",
color="#e6959c",
size=2
}
) +
@vlplot(
mark={
typ=:point,
filled=true,
typ="square"
}
)
When I add column="variable:n"
in the spec, it throws an error. i.e.
dfm |>
@vlplot(
x={
:time,
typ= "quantitative",
axis={
title="Time in Weeks"
}
},
y={:value, typ="quantitative", axis={title="Cumulative Cases"}},
width=400,
height=400,
color="variable:n",
column="variable:n"
) +
@vlplot(
mark={
typ="line",
color="#e6959c",
size=2
}
) +
@vlplot(
mark={
typ=:point,
filled=true,
typ="square"
}
)
TypeError: Cannot read property 'push' of undefined
at C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:3158:33
at Array.reduce (<anonymous>)
at pathGroupingFields (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:3101:31)
at parsePathMark (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16548:25)
at parseMarkGroups (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16540:20)
at UnitModel.parseMarkGroup (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16813:35)
at LayerModel.parseMarkGroup (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16896:23)
at LayerModel.parse (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:13943:18)
at Object.compile (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:17068:19)
at compile (C:\Users\affan\.julia\packages\VegaLite\CzoMX\src\rendering\vl2vg.js:18:27)
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-cli\src\render.js:61:31
at processTicksAndRejections (internal/process/task_queues.js:93:5)
TypeError: Cannot read property 'push' of undefined
at C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:3158:33
at Array.reduce (<anonymous>)
at pathGroupingFields (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:3101:31)
at parsePathMark (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16548:25)
at parseMarkGroups (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16540:20)
at UnitModel.parseMarkGroup (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16813:35)
at LayerModel.parseMarkGroup (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:16896:23)
at LayerModel.parse (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:13943:18)
at Object.compile (C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-lite\build\vega-lite.js:17068:19)
at compile (C:\Users\affan\.julia\packages\VegaLite\CzoMX\src\rendering\vl2vg.js:18:27)
[166]:
Javascript Error: Bug: Channel column unimplemented for line mark
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at C:\Users\affan\.julia\packages\VegaLite\CzoMX\deps\node_modules\vega-cli\src\render.js:61:31
at processTicksAndRejections (internal/process/task_queues.js:93:5)
If I get rid of the extra @vlplot
specs, it works… i.e.
# plot the data using melted data
dfm |>
@vlplot(
:line,
x={
:time,
typ= "quantitative",
axis={
title="Time in Weeks"
}
},
y={:value, typ="quantitative", axis={title="Cumulative Cases"}},
width=400,
height=400,
color="variable:n",
column="variable:n"
)