Я хотел бы спросить, можно ли использовать Chart.js отображать значения данных? Я хочу распечатать график.
Спасибо за любой совет.
javascript
chart.js
FuSsA
источник
источник
Ответы:
Позднее редактирование: для этого есть официальный плагин для Chart.js
2.7.0+
: https://github.com/chartjs/chartjs-plugin-datalabelsОригинальный ответ:
Вы можете перемещаться по точкам / полосам на AnimationComplete и отображать значения
Предварительный просмотр
HTML
Сценарий
Fiddle - http://jsfiddle.net/uh9vw0ao/
источник
onComplete
здесь обратный вызов, но он также срабатывает при наведении курсора мыши на полосу диаграммы, в результате чего число мигает из-за перерисовки. Было бы так, если быonAnimationComplete
? Я не могу использовать этот обратный вызов с моим существующим кодом диаграммы (см.var chartBar
Внизу pastebin.com/tT7yTkGh )Вот обновленная версия Chart.js 2.3
23 сентября 2016 г .: Отредактировал мой код для работы с версией 2.3 для типов линий и полос.
Важно: даже если вам не нужна анимация, не меняйте параметр продолжительности на 0, иначе вы получите ошибку chartInstance.controller is undefined .
источник
Этот вариант анимации работает в версии 2.1.3 на гистограмме.
Слегка измененный ответ @Ross
источник
hover: {animationDuration: 0}
чтобы метки не.filter(dataset => !dataset._meta[0].hidden)
Я думаю, что лучший вариант сделать это в chartJS v2.x - использовать плагин, поэтому у вас нет большого блока кода в параметрах. Кроме того, он предотвращает исчезновение данных при наведении курсора на полосу.
Т.е. просто используйте этот код, который регистрирует плагин, который добавляет текст после рисования диаграммы.
источник
Chart.defaults.global.tooltips.enabled = false;
. Проблема с этим решением заключается в том, чтоafterDraw
функция вызывается сотни раз, что, вероятно, вызывает накладные расходы ЦП. Тем не менее, это пока единственный ответ без моргания. Если вам нужен лучший рендеринг дляhorizontalBar
диаграмм, используйтеctx.textAlign = 'left'; ctx.textBaseline = 'middle';
иctx.fillText(dataset.data[i], model.x+5, model.y);
.Основываясь на ответе @ Ross для Chart.js 2.0 и выше, мне пришлось включить небольшую настройку, чтобы не допустить случая, когда высота столбца слишком велика к границе шкалы.
animation
Атрибут опции Гистограмма в:источник
ctx.save()
onComplete
обратный вызов выполняется , когда я парил на баре, который вызывает перерисовки и текст отображается в blink.Would это то же самое сonAnimationComplete
, а? Я не могу использоватьonAnimationComplete
вызов обратно с моего существующего кода (смvar chartBar
в нижней части Pastebin. com / tT7yTkGhЕсли вы используете плагин chartjs-plugin-datalabels, следующий объект параметров кода поможет
Убедитесь, что вы импортируете
import 'chartjs-plugin-datalabels';
файл машинописного текста или добавляете ссылку на него<script src="chartjs-plugin-datalabels.js"></script>
в свой файл javascript.источник
После этого хорошего ответа я бы использовал эти параметры для гистограммы:
Он по-прежнему использует систему всплывающих подсказок и его преимущества (автоматическое позиционирование, создание шаблонов, ...), но скрывает украшения (цвет фона, курсор, ...)
источник
this.datasets[0].points
вместо.bars
. Я предпочитаю это решение, потому что оно использует систему всплывающих подсказок.onComplete
но он срабатывает даже при наведении курсора мыши на столбцы диаграммы, что приводит к перерисовке текста и возникновению нежелательного эффекта мигания. Я также пробовал,afterDraw
и это все то же самое. не происходит в скрипке, предоставленной картофелечистками. Любые идеи, пожалуйста?Из примеров chart.js (файл Chart.js-2.4.0 / samples / data_labelling.html):
`` `// Определяем плагин для предоставления меток данных
`` `
источник
Я бы рекомендовал использовать этот плагин: https://github.com/chartjs/chartjs-plugin-datalabels
Ярлыки можно добавлять в ваши диаграммы, просто импортировав плагин в файл js, например:
И его можно точно настроить с помощью этих документов: https://chartjs-plugin-datalabels.netlify.com/options.html
источник
Немного отредактировал ответ @ajhuddy. Только для гистограмм . Моя версия добавляет:
Оборотная сторона: при наведении курсора на полосу, внутри которой есть значение, значение может выглядеть немного неровным. Я не нашел решения отключить эффекты наведения. Это также может потребовать настройки в зависимости от ваших собственных настроек.
Конфигурация:
Помощники:
источник
calculateTickRotation
, это внутри функции Scale. Я это проанализирую.По моему опыту, после того, как вы включите плагин chartjs-plugin-datalabels (обязательно разместите
<script>
тег после тега chart.js на своей странице), ваши диаграммы начинают отображать значения.Если вы затем выберете, вы можете настроить его в соответствии со своими потребностями. Настройка четко задокументирована здесь, но в основном формат похож на этот гипотетический пример:
источник