existe alguma maneira de passar alguns dados adicionais para o objeto de série que usará para mostrar na 'dica de ferramenta' do gráfico?
por exemplo
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%b %e', this.x) +': '+ this.y;
}
aqui podemos usar apenas series.name, this.x & this.y para a série. Digamos que eu precise passar outro valor dinâmico sozinho com o conjunto de dados e possa acessar via objeto de série. Isso é possível?
Agradeço antecipadamente a todos.
series
objeto e exibi-los neste manipulador?Respostas:
Sim, se você configurar o objeto de série como o seguinte, em que cada ponto de dados é um hash, você pode passar valores extras:
Em sua dica, você pode acessá-lo por meio do atributo "ponto" do objeto passado em:
Exemplo completo aqui: https://jsfiddle.net/burwelldesigns/jeoL5y7s/
fonte
Além disso, com esta solução, você pode até colocar vários dados quantos desejar :
Obrigado Nick.
fonte
datetime
um valor x, mas queremos adicionar dados extras à dica de ferramenta.Para dados de série temporal, especialmente com pontos de dados suficientes para ativar o limite de turbo , as soluções propostas acima não funcionarão. No caso do limite turbo, isso ocorre porque Highcarts espera que os pontos de dados sejam uma matriz como:
Para não perder os benefícios do limite do turbo (que é importante ao lidar com muitos pontos de dados), eu armazeno os dados fora do gráfico e procuro o ponto de dados na
formatter
função de dica de ferramenta . Aqui está um exemplo:Essa abordagem funcionará para todos os tipos de gráfico.
fonte
data: _.map(data, row => [row['timestamp'], row['value']])
serdata: chartData.map(row => [row.timestamp, row.value])
? Além disso, você não precisa de lodash; você pode usar Array.find . Não é compatível com o IE, mas você já está usando o ES6 (const
) e o MS parou de oferecer suporte ao IE em 2016 .chartData
. Estou acostumado a usar lodash, mas você está certo. Eu atualizei meu exemplo para que seja independente da biblioteca. THX.Estou usando AJAX para obter meus dados do SQL Server, então preparo uma matriz js que é usada como dados em meu gráfico. Código JavaScript assim que o AJAX for bem-sucedido:
Agora, para mostrar metadados extras na dica de ferramenta:
Eu uso um DataRow para iterar meu conjunto de resultados e, em seguida, uso uma classe para atribuir os valores antes de passar de volta no formato Json. Aqui está o código C # na ação do controlador chamada pelo Ajax.
Sei que existe uma maneira mais eficiente e aceitável de codificar em C #, mas herdei o projeto.
fonte
Só para adicionar algum tipo de dinamismo:
Fiz isso para gerar dados para um gráfico de colunas empilhadas com 10 categorias.
Eu queria ter para cada série de dados da categoria 4 e exibir informações adicionais (imagem, pergunta, distrator e resposta esperada) para cada uma das séries de dados:
Na seção de gráficos altos:
Espero que ajude alguém.
fonte