Gostaria de perguntar se é possível usar Chart.js exibir valores de dados? Eu quero imprimir o gráfico.
Obrigado por qualquer conselho.
javascript
chart.js
FuSsA
fonte
fonte
Respostas:
Edição tardia: há um plugin oficial para Chart.js
2.7.0+
para fazer isso: https://github.com/chartjs/chartjs-plugin-datalabelsResposta original:
Você pode percorrer os pontos / barras emAnimationComplete e exibir os valores
Antevisão
HTML
Roteiro
Fiddle - http://jsfiddle.net/uh9vw0ao/
fonte
onComplete
retorno de chamada aqui, mas ele também dispara quando o mouseover está na barra do gráfico, fazendo com que o número pisque devido ao redesenho. Seria o mesmo seonAnimationComplete
? Não consigo usar este retorno de chamada com meu código de gráfico existente (consultevar chartBar
no final pastebin.com/tT7yTkGh )Aqui está uma versão atualizada para Chart.js 2.3
23 de setembro de 2016: editei meu código para funcionar com a v2.3 para ambos os tipos de linha / barra.
Importante: Mesmo se você não precisar da animação, não altere a opção de duração para 0, caso contrário, você obterá chartInstance.controller is undefined error.
fonte
Esta opção de animação funciona para 2.1.3 em um gráfico de barras.
Resposta @Ross ligeiramente modificada
fonte
hover: {animationDuration: 0}
para interromper a animação dos rótulos no hover.filter(dataset => !dataset._meta[0].hidden)
Acho que a melhor opção de fazer isso no chartJS v2.x é usar um plugin, então você não tem um grande bloco de código nas opções. Além disso, evita que os dados desapareçam ao passar o mouse sobre uma barra.
Ou seja, simplesmente use este código, que registra um plugin que adiciona o texto depois que o gráfico é desenhado.
fonte
Chart.defaults.global.tooltips.enabled = false;
. O problema com essa solução é que aafterDraw
função é chamada centenas de vezes, provavelmente gerando sobrecarga de CPU. Ainda assim, é a única resposta por enquanto sem piscar. Se você precisar de uma renderização melhor parahorizontalBar
gráficos, usectx.textAlign = 'left'; ctx.textBaseline = 'middle';
ectx.fillText(dataset.data[i], model.x+5, model.y);
.Com base na resposta de @Ross para Chart.js 2.0 e superior, tive que incluir um pequeno ajuste para evitar o caso em que as alturas da barra chegam também escolhidas para o limite da escala.
o
animation
atributo da opção do gráfico de barras:fonte
ctx.save()
onComplete
chamada de retorno é executada quando eu passei o mouse sobre a barra, o que faz com que o redesenho e o texto pareçam piscar. Isso também seria o mesmoonAnimationComplete
? Não consigo usar aonAnimationComplete
chamada de retorno com meu código existente (vejavar chartBar
no final do pastebin. com / tT7yTkGhSe você estiver usando o plugin chartjs-plugin-datalabels então o seguinte objeto de opções de código ajudará
Certifique-se de importar
import 'chartjs-plugin-datalabels';
em seu arquivo typescript ou adicionar referência a<script src="chartjs-plugin-datalabels.js"></script>
em seu arquivo javascript.fonte
Seguindo esta boa resposta , eu usaria estas opções para um gráfico de barras:
Este ainda usa o sistema de dicas e suas vantagens (posicionamento automático, modelos, ...) mas escondendo as decorações (cor de fundo, circunflexo, ...)
fonte
this.datasets[0].points
vez de.bars
. Eu prefiro essa solução porque ela usa o sistema de dicas de ferramentas.onComplete
retorno de chamada das animações, mas é acionado mesmo quando pairado sobre as barras do gráfico, o que faz com que o texto seja redesenhado e dê um efeito de piscar indesejado. Eu também tenteiafterDraw
e é tudo igual. Estranhamente, não acontece no violino fornecido por potatopeelings.Any Ideas plz?A partir de amostras chart.js (arquivo Chart.js-2.4.0 / samples / data_labelling.html):
`` `// Definir um plugin para fornecer rótulos de dados
`` `
fonte
Eu recomendo usar este plugin: https://github.com/chartjs/chartjs-plugin-datalabels
Os rótulos podem ser adicionados aos seus gráficos simplesmente importando o plugin para o arquivo js, por exemplo:
E pode ser ajustado usando estes documentos: https://chartjs-plugin-datalabels.netlify.com/options.html
fonte
Editou um pouco a resposta de @ ajhuddy. Apenas para gráficos de barras . Minha versão adiciona:
Desvantagem: ao passar o mouse sobre uma barra que tem valor dentro dela, o valor pode parecer um pouco irregular. Não encontrei uma solução para desativar os efeitos de foco. Também pode precisar de ajustes, dependendo de suas próprias configurações.
Configuração:
Ajudantes:
fonte
calculateTickRotation
, está dentro da função Escala. Vou analisar isso.Pela minha experiência, depois de incluir o plug-in chartjs-plugin-datalabels (certifique-se de colocar a
<script>
tag após a tag chart.js em sua página), seus gráficos começam a exibir valores.Se você escolher, poderá personalizá-lo para atender às suas necessidades. A personalização está claramente documentada aqui, mas basicamente o formato é como este exemplo hipotético:
fonte