Fold transform doesn't support
Ying456123 opened this issue · 1 comments
Ying456123 commented
Hi,
Sorry to ask as a new user. When I want to compare two columns with layers, I cannot encode color with two columns. Even if I add the encodeColor on the second layer, it doesn't behave as I expected.
Below is original code:
val data = Seq(
("te1", 300.0, 17.0),
("te2", 50.0, 19.0),
("te1", 40.2, 21.3),
("te2", 15.0, 21.5)
)
val df = spark.createDataFrame(data).toDF("col", "data1", "data2")
Vegas.layered("Plots two layers").
withDataFrame(df).
withLayers(
Layer().
mark(Bar).
encodeX("col", Ordinal, scale=Scale(bandSize=10)).
encodeY("data1", Quantitative).
encodeColor(field="data1", dataType=Quantitative),
Layer().
mark(Bar).
encodeX("col", Ordinal, scale=Scale(bandSize=10)).
encodeY("data2", Quantitative)
).
show
After I add the encodeColor on second layer, it behaves as below:
Vegas.layered("Plots two layers").
withDataFrame(df).
withLayers(
Layer().
mark(Bar).
encodeX("col", Ordinal, scale=Scale(bandSize=10)).
encodeY("data1", Quantitative).
encodeColor(field="data1", dataType=Quantitative),
Layer().
mark(Bar).
encodeX("col", Ordinal, scale=Scale(bandSize=10)).
encodeY("data2", Quantitative).
encodeColor(field="data2", dataType=Quantitative)
).
show
Ying456123 commented
Now I found using fold transformation can give me the expected result, but seems like Vegas doesn't support it now.
Below is my Vega-lite's script and result:
{
"$schema": "https://vega.github.io/schema/vega-lite/v3.json",
"description": "A bar chart showing the US population distribution of age groups and gender in 2000.",
"data": {
"values": [
{
"col": "row1",
"data1": 28,
"data2":30
},
{
"col": "row2",
"data1": 47,
"data2":105
},
{
"col": "row3",
"data1": 71,
"data2":177
}
]
},
"transform": [{"fold": ["data1", "data2"]}],
"mark":"bar",
"encoding":{
"x":{"field":"col", "type":"nominal"},
"y": {"field": "value", "type": "quantitative"},
"color":{"field":"key","type":"nominal"}
}
}