在 vega-lite 中订购标称轴值
Order nominal axis values in vega-lite
我有一个 vega-lite 分层条形图来比较之前和 post 李克特量表的调查结果。 x 轴有 likert 选项,但这些选项按字母顺序排列。 x轴值的顺序可以排序吗?例如"strongly disagree, disagree, neural, agree, strongly agree"?
vega-lite 代码示例:
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"description": "A bar chart showing the US population distribution of age groups and gender in 2000.",
"data": {
"values": [
{"type":"pre", "answer":"Strongly Disagree", "total":15},
{"type":"post", "answer":"Strongly Disagree", "total":30},
{"type":"pre", "answer":"Disagree", "total":15},
{"type":"post", "answer":"Disagree", "total":30},
{"type":"pre", "answer":"Neutral", "total":15},
{"type":"post", "answer":"Neutral", "total":30},
{"type":"pre", "answer":"Neutral", "total":15},
{"type":"post", "answer":"Neutral", "total":30},
{"type":"pre", "answer":"Agree", "total":15},
{"type":"post", "answer":"Agree", "total":30},
{"type":"pre", "answer":"Strongly Agree", "total":20},
{"type":"post", "answer":"Strongly Agree", "total":40}
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "answer", "type": "nominal"
},
"y": {
"field": "total", "type": "quantitative",
"axis": {"title": "% Counts"},
"stack": "none"
},
"color": {
"field": "type", "type": "nominal",
"axis": {"title": "Answer"},
"scale": {"range": ["#e377c2","#1f77b4"]}
},
"opacity": {"value": 0.7}
}
}
您可以使用 x.scale.domain
for that purpose. Other sort
methods are described here.
这是使用 vega 3.0.0-beta.34
和 vega-lite 2.0.0-beta.4
的规范:
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"description": "A bar chart showing the US population distribution of age groups and gender in 2000.",
"data": {
"values": [{
"type": "pre",
"answer": "Strongly Disagree",
"total": 15
}, {
"type": "post",
"answer": "Strongly Disagree",
"total": 30
}, {
"type": "pre",
"answer": "Disagree",
"total": 15
}, {
"type": "post",
"answer": "Disagree",
"total": 30
}, {
"type": "pre",
"answer": "Neutral",
"total": 15
}, {
"type": "post",
"answer": "Neutral",
"total": 30
}, {
"type": "pre",
"answer": "Neutral",
"total": 15
}, {
"type": "post",
"answer": "Neutral",
"total": 30
}, {
"type": "pre",
"answer": "Agree",
"total": 15
}, {
"type": "post",
"answer": "Agree",
"total": 30
}, {
"type": "pre",
"answer": "Strongly Agree",
"total": 20
}, {
"type": "post",
"answer": "Strongly Agree",
"total": 40
}]
},
"mark": "bar",
"encoding": {
"x": {
"field": "answer",
"type": "nominal",
"scale": {
"domain": [
"Strongly Disagree",
"Disagree",
"Neutral",
"Agree",
"Strongly Agree"
]
},
"axis": { "title": "Answer" }
},
"y": {
"field": "total",
"type": "quantitative",
"axis": {
"title": "% Counts"
},
"stack": "none"
},
"color": {
"field": "type",
"type": "nominal",
"scale": {
"range": ["#e377c2", "#1f77b4"]
}
},
"opacity": {
"value": 0.7
}
}
}
我有一个 vega-lite 分层条形图来比较之前和 post 李克特量表的调查结果。 x 轴有 likert 选项,但这些选项按字母顺序排列。 x轴值的顺序可以排序吗?例如"strongly disagree, disagree, neural, agree, strongly agree"?
vega-lite 代码示例:
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"description": "A bar chart showing the US population distribution of age groups and gender in 2000.",
"data": {
"values": [
{"type":"pre", "answer":"Strongly Disagree", "total":15},
{"type":"post", "answer":"Strongly Disagree", "total":30},
{"type":"pre", "answer":"Disagree", "total":15},
{"type":"post", "answer":"Disagree", "total":30},
{"type":"pre", "answer":"Neutral", "total":15},
{"type":"post", "answer":"Neutral", "total":30},
{"type":"pre", "answer":"Neutral", "total":15},
{"type":"post", "answer":"Neutral", "total":30},
{"type":"pre", "answer":"Agree", "total":15},
{"type":"post", "answer":"Agree", "total":30},
{"type":"pre", "answer":"Strongly Agree", "total":20},
{"type":"post", "answer":"Strongly Agree", "total":40}
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "answer", "type": "nominal"
},
"y": {
"field": "total", "type": "quantitative",
"axis": {"title": "% Counts"},
"stack": "none"
},
"color": {
"field": "type", "type": "nominal",
"axis": {"title": "Answer"},
"scale": {"range": ["#e377c2","#1f77b4"]}
},
"opacity": {"value": 0.7}
}
}
您可以使用 x.scale.domain
for that purpose. Other sort
methods are described here.
这是使用 vega 3.0.0-beta.34
和 vega-lite 2.0.0-beta.4
的规范:
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"description": "A bar chart showing the US population distribution of age groups and gender in 2000.",
"data": {
"values": [{
"type": "pre",
"answer": "Strongly Disagree",
"total": 15
}, {
"type": "post",
"answer": "Strongly Disagree",
"total": 30
}, {
"type": "pre",
"answer": "Disagree",
"total": 15
}, {
"type": "post",
"answer": "Disagree",
"total": 30
}, {
"type": "pre",
"answer": "Neutral",
"total": 15
}, {
"type": "post",
"answer": "Neutral",
"total": 30
}, {
"type": "pre",
"answer": "Neutral",
"total": 15
}, {
"type": "post",
"answer": "Neutral",
"total": 30
}, {
"type": "pre",
"answer": "Agree",
"total": 15
}, {
"type": "post",
"answer": "Agree",
"total": 30
}, {
"type": "pre",
"answer": "Strongly Agree",
"total": 20
}, {
"type": "post",
"answer": "Strongly Agree",
"total": 40
}]
},
"mark": "bar",
"encoding": {
"x": {
"field": "answer",
"type": "nominal",
"scale": {
"domain": [
"Strongly Disagree",
"Disagree",
"Neutral",
"Agree",
"Strongly Agree"
]
},
"axis": { "title": "Answer" }
},
"y": {
"field": "total",
"type": "quantitative",
"axis": {
"title": "% Counts"
},
"stack": "none"
},
"color": {
"field": "type",
"type": "nominal",
"scale": {
"range": ["#e377c2", "#1f77b4"]
}
},
"opacity": {
"value": 0.7
}
}
}