#chart.js #scaletype
#chart.js #scaletype
Вопрос:
Использование Chart.js , я пытаюсь заставить ось x (и toolips) отображать ДАТУ, но все, что я могу получить, — это большие целые числа, отображаемые в качестве метки оси x. Я сравнил, что делает пример в документации, и я не вижу, что он делает, чего я не делаю. Кто-нибудь может помочь?
Вот крошечный пример, который я создал, показывающий, что он не работает. (кстати, в качестве дополнительной проблемы обратите внимание, что если цвет КРАСНОЙ строки написан красным, а не красным, строка выглядит нормально, но всплывающие подсказки больше не работают в этой строке) https://plnkr.co/edit/CKUf4zFC1vhe3VNUF5Lf?p=preview
javascript for the above plunker example is below
----------------------------------------------------
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
<canvas id="canvas"></canvas>
<script>
var chartData = {
datasets: [{
borderColor: 'Red',
label: 'Capital R in borderColor, tooltips dont work',
data: [{
x: new Date('2011-04-11T11:45:00'),
y: 25
}, {
x: new Date('2011-04-11T12:51:00'),
y: 28
}, {
x: new Date('2011-04-11T14:10:00'),
y: 22
}, {
x: new Date('2011-04-11T15:15:00'),
y: 18
}]
}, {
borderColor: 'green',
label: 'borderColor all lower case, tooltips now work',
data: [{
x: new Date('2011-04-11T11:45:00'),
y: 15
}, {
x: new Date('2011-04-11T12:51:00'),
y: 18
}, {
x: new Date('2011-04-11T14:10:00'),
y: 12
}, {
x: new Date('2011-04-11T15:15:00'),
y: 8
}]
}, ]
};
window.onload = function() {
var ctx = document.getElementById("canvas").getContext("2d");
window.myScatterxx = Chart.Scatter(ctx, {
data: chartData,
scaleType: 'date',
options: { title: { display: true, text: "scaleType='date' isn't working", fontSize:36} },
});
};
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.min.js">
</script>
</body>
</html>
Ответ №1:
Прежде всего, поскольку документация беспорядочная, я не удивлен, что вы не поняли, как создать диаграмму временного масштаба. Фактический вызов выглядит следующим образом :
window.myScatterxx = Chart.Scatter(ctx, {
data: chartData,
options: {
title: {
display: true,
text: "it is now working",
fontSize: 36
},
scales: {
xAxes: [{
// This is the important part
type: "time",
}]
}
},
});
Теперь у вас есть правильный синтаксис, вам также нужно импортировать правильную библиотеку. Как я вижу из приведенного вами фрагмента кода, вы импортировали Chart.min.js
, но вам нужно больше, поскольку вы знаете, как работать с элементом time.
Вы можете либо :
-
Импорт Moment.js (Ссылка CDN) и затем
Chart.min.js
. -
Импорт
Chart.bundle.min.js
, содержащий библиотеки моментов и диаграмм.
Наконец, я также заметил, что в вашем коде у вас возникла проблема с отображением всплывающих подсказок для красного набора данных. Это потому, что вы определили его цвет как Red
. Измените его на red
и всплывающие подсказки снова будут работать :
datasets: [{
borderColor: 'red',
label: 'Capital R in borderColor, tooltips now work',
data: [
// ...
]
}]
Вы можете увидеть все эти исправления в этом jsFiddle, и вот конечный результат :
Комментарии:
1. Большое спасибо, Текив!
2. Следующий вопрос, который, я надеюсь, тоже прост, заключается в том, как я могу настроить всплывающую подсказку, чтобы показывать только часть даты без времени? В моем реальном приложении важна только дата. кстати — на красный против красного. Я понял, что все строчные буквы в цвете заставляют всплывающие подсказки работать. Но это непоследовательно в том смысле, что цвет «Красный» делает цвет строки красным, но он нарушает всплывающую подсказку. Похоже, внутренне сравнение цветов с добавлением a . Вызов toLowerCase() сделал бы его более щадящим. Еще раз, большое спасибо!
3. @user2191367 Очень приятно ! — Что касается редактирования всплывающих подсказок, ознакомьтесь с документацией об обратном вызове всплывающих подсказок ( прокрутите немного вниз до «Обратные вызовы всплывающих подсказок» ). Также проверьте эту другую скрипку с идеей о том, что вам нужно сделать.
4. Еще раз спасибо Tektiv! Это именно то, что мне было нужно
5. @user2191367 Рад, что я помог!