Escala do eixo logarítmico dojo
-
20-09-2019 - |
Pergunta
Eu tenho usado o gráfico do dojo para criar um gráfico de colunas. Estou muito impressionado com isso até agora, mas decidi que preciso de um eixo y logarítmico. Não parece que isso é suportado até agora, embora eu tenha visto um entrada no blog implicando que foi planejado em algum momento.
Alguém sabe disso é possível no momento? Caso contrário, fico feliz em tentar escrever o aprimoramento, por isso, se alguém tiver algumas dicas sobre por onde começar, será recebido com gratidão. Suspeito que seja o caso de implementar um novo tipo de escala, embora ainda não tenha passado muito tempo cavando a fonte.
Obrigado, Martin.
Solução
Dojox.gfx ainda não possui o eixo logarítmico ainda.
Atualizar: Uma maneira de fazer isso é remapear os dados ao longo do eixo logarítmico e usar o eixo linear com etiquetas personalizadas. Por exemplo:
// 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);
// ...
Algo assim fará o truque. A outra opção é usar a função de rotulagem para gerar rótulos "logarítmicos" automaticamente.