Ваши данные указаны как CSV, что означает, что все значения в вычислениях интерпретируются как строки, если не указано иное. Есть два способа это исправить; вы можете добавить оператор parse
в формате данных определение:
"data": {
"url": "https://raw.githubusercontent.com/Anika6138/InfoVis/master/arabica_data_cleaned.csv",
"format": {
"type": "csv",
"parse": {"Aroma": "number", "Flavor": "number", "Aftertaste": "number", "Acidity": "number", "Sweetness": "number"}
}
}
или вы можете использовать parseFloat в выражении вычисления:
"transform": [
{
"calculate": "parseFloat(datum.Aroma) + parseFloat(datum.Flavor) + parseFloat(datum.Aftertaste) + parseFloat(datum.Acidity) + parseFloat(datum.Sweetness)",
"as": "Taste_Points"
}
]
Причина, по которой поля были неявно отфильтрованы в вашей исходной спецификации, заключается в том, что во многих случаях результатом суммы была конкатенированная строка, которая не может быть проанализирована как допустимое число, и значения NaN неявно удаляются из количественных кодировок; например:
{
"data": {
"values": [
{"y": "A", "x": 1},
{"y": "B", "x": 2},
{"y": "C", "x": null},
{"y": "D", "x": null}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "ordinal"}
}
}