Шкала Логарифмической оси Додзе
-
20-09-2019 - |
Вопрос
Я использовал диаграмму Dojo для создания диаграммы столбцов.Пока что я очень впечатлен этим, но решил, что мне нужна логарифмическая ось y.Не похоже, что это поддерживается до сих пор, хотя я видел запись в блоге подразумевая, что это было запланировано в какой-то момент.
Кто-нибудь знает, возможно ли это на данный момент?Если нет, то я с удовольствием попробую написать улучшение сам, так что, если у кого-нибудь есть несколько советов о том, с чего начать, я буду с благодарностью принят.Я подозреваю, что это связано с внедрением нового типа шкалы, хотя я еще не потратил много времени на изучение исходного кода.
Спасибо, Мартин.
Решение
dojox.gfx по-прежнему не имеет логарифмической оси.
Обновить: Один из способов сделать это - переназначить данные вдоль логарифмической оси и использовать линейную ось с пользовательскими метками.Например:
// we will transform our 'x' to a decadic logarithmic scale
var LOG10 = Math.log(10);
var data = [...]; // my data of {x, y}
var transformedData = dojo.map(data, function(value){
return {
x: Math.log(value.x) / LOG10,
y: value.y // 'y' is unchanged
};
});
// ...
// add the axis and the data
chart.addAxis("x", {
natural: true,
includeZero: true,
// our logarithmic labels
labels: [
{value: 0, text: "1"},
{value: 1, text: "10"},
{value: 2, text: "100"},
{value: 3, text: "1000"},
{value: 4, text: "10^4"},
{value: 5, text: "10^5"},
{value: 6, text: "10^6"},
{value: 7, text: "10^7"},
{value: 8, text: "10^8"},
{value: 9, text: "10^9"}
]
});
chart.addSeries("my data", transformedData);
// ...
Что-то в этом роде сработает.Другой вариант - использовать функцию маркировки для автоматического создания "логарифмических" меток.