我的数据包含3列 - 日期,类别和值。该类别是我想要扩展的短字符串代码,例如" R" => "常规"," n" => "禁止"等,并显示正确的图例字符串。有没有办法让地图{"r":"regular", "n": "prohibited"}
- 未列出会按原样显示?
另外,由于我有很多相似的图表,我希望颜色一致。排序类别没有帮助,因为并非所有图表都包含所有图表。如何设置映射{"r":"blue", "n": "#332211"}
我可以使用映射的类别名称,例如" regular"代替。所有非映射值都应来自其他来源,如Categories20等。
答案 0 :(得分:3)
您可以在内置" scatter"上使用此变体。为单个标签设置自定义标题的示例。看看" legend_labels"规模。
{
"width": 200,
"height": 200,
"data": [
{
"name": "iris",
"url": "data/iris.json"
}
],
"scales": [
{
"name": "legend_labels",
"type": "ordinal",
"domain": ["setosa", "versicolor", "virginica"],
"range": ["SET", "VER", "VIR"]
},
{
"name": "x",
"nice": true,
"range": "width",
"domain": {"data": "iris", "field": "data.sepalWidth"}
},
{
"name": "y",
"nice": true,
"range": "height",
"domain": {"data": "iris", "field": "data.petalLength"}
},
{
"name": "c",
"type": "ordinal",
"domain": {"data": "iris", "field": "data.species"},
"range": ["#800", "#080", "#008"]
}
],
"axes": [
{"type": "x", "scale": "x", "offset": 5, "ticks": 5, "title": "Sepal Width"},
{"type": "y", "scale": "y", "offset": 5, "ticks": 5, "title": "Petal Length"}
],
"legends": [
{
"fill": "c",
"title": "Species",
"offset": 0,
"properties": {
"symbols": {
"fillOpacity": {"value": 0.5},
"stroke": {"value": "transparent"}
},
"labels": {
"text": {"scale": "legend_labels", "field": "data"}
}
}
}
],
"marks": [
{
"type": "symbol",
"from": {"data": "iris"},
"properties": {
"enter": {
"x": {"scale": "x", "field": "data.sepalWidth"},
"y": {"scale": "y", "field": "data.petalLength"},
"fill": {"scale": "c", "field": "data.species"},
"fillOpacity": {"value": 0.5}
},
"update": {
"size": {"value": 100},
"stroke": {"value": "transparent"}
},
"hover": {
"size": {"value": 300},
"stroke": {"value": "white"}
}
}
}
]
}
同样,您可以自定义单个颜色,例如" c"规模以上。
不幸的是,目前还没有任何方法可以为未映射的值自定义任何回退行为,因此您需要确保您的比例包含域中的所有值。提交该功能的增强请求可能会很好。