Шкала логарифмической оси додзё - PullRequest
3 голосов
/ 12 января 2010

Я использовал диаграммы Dojo для создания диаграммы Columns. Пока я очень впечатлен этим, но решил, что мне нужна логарифмическая ось Y. Похоже, что пока это не поддерживается, хотя я видел запись в блоге , подразумевающую, что это было запланировано в какой-то момент.

Кто-нибудь знает, что это возможно в данный момент? Если нет, то я с удовольствием попробую написать улучшение самостоятельно, поэтому, если у кого-то есть советы о том, с чего начать, они будут с благодарностью приняты. Я подозреваю, что это случай реализации нового типа Scale, хотя я пока не тратил много времени на поиск источника.

Спасибо, Мартин.

1 Ответ

3 голосов
/ 12 января 2010

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);

// ...

Нечто подобное поможет.Другой вариант - использовать функцию маркировки для автоматического создания «логарифмических» меток.

...