我正在尝试创建一个google sheets web应用程序,它可以从电子表格中读取数据来生成这个图表,这就是为什么我使用vanilla JS。
function getEventEntries() {
function createChart(args) {
const ctx = document.getElementById("myChart").getContext("2d");
const cfg = {
type: 'scatter',
data: {
datasets: [{
label: 'Events',
data: args
}],
options: {
scales: {
x: { type: 'time' },
y: { type: 'linear' }
}
}
}
};
const myChart = new Chart(ctx, cfg);
}
//get data from google sheets
//google.script.run.withSuccessHandler(createChart).getEntries();
// dummy data tests to figure out what formats will work
var events = [{x: '2021-11-06 23:39:30', y: -3}, {x: '2008-04-12 13:30:14', y: 10}];
var events1 = [{x: new Date('2021-11-06'), y: -3}, {x: new Date('2008-04-12'), y: 10}]; // actually plots data and creates an x-axis that isn't 0 to 1--still not showing date values for ticks tho
createChart(events1);
}
function onLoad() {
getEventEntries();
}
$(document).ready(onLoad);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.2.1/dist/chart.umd.min.js"></script>
<!-- I've tried date-fns and moment.js adapters with no luck either -->
<script src="https://cdn.jsdelivr.net/npm/luxon@3.3.0/build/global/luxon.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1"></script>
<canvas id="myChart"></canvas>
正如您在运行我的代码片段时所看到的,x轴没有以任何格式列出日期。只是大数字而已。我想让它列出可读的日期,也许是MMM YYYY格式。
1条答案
按热度按时间gijlo24d1#
假设您使用的是
Chart.js
的latest
版本,您需要传递正确的configuration
对象,以便它可以按照提供的format
渲染dates
。你可以试试这样的东西:更新
对于旧版本的
2.x
或Chart.js
,时标要求同时存在date library and corresponding adapter
。默认情况下,图表。js包含一个Moment.js
适配器。更多信息here.参考文件:Time Axis Specific Options
希望有帮助!
工作液(
Using Adapter
)你好,我想出来了。在
Chartjs
的最新版本4.2.1
中,文档中提到日期适配器时间刻度要求同时存在日期库和相应的适配器。
因此,你需要修改你的代码如下:
超文本标记语言
JavaScript
除了加载
Chart.js
脚本之外,还需要加载相应的适配器脚本date_fns.js
和chartjs-adapter-date-fns-bundle.min.js
下面是工作fiddle以供参考。
适配器列表可以在这里找到。