D3 - cal-heatmap日历热图所需的数据格式?

时间:2013-12-28 07:35:47

标签: javascript json d3.js calendar heatmap

我正在尝试从此link投射calendar-heatmap

我搜遍了整个文档但我找不到data-format的任何示例文件。

这是文档的link,但没有示例文件。

在文档中,我发现导入的数据为datas-years.json。但我对格式如何没有任何线索。有人请帮帮我。

4 个答案:

答案 0 :(得分:3)

Cal-Heatmap期望JSON对象中的数据采用以下格式:

{
    "timestamp1": value1,
    "timestamp2": value2,
    "timestamp3": value3,
    ...
}

值可以是任何数字(整数或浮点数)。

所有时间戳都以秒为单位。秒数是“UTC秒”(有时也称为“纪元秒”或“unix秒”),作为自提供的GMT日期/时间的01-01-1970 00:00:00以来的秒数。这是UTC second calculator

今天我们在1.388.000.000 UTC秒左右。该站点上的示例显示了2000年的数据,这就是您在JSON文件示例中看到的UTC秒数大约为946.000.000的原因。

好消息是,您可以在互联网上轻松找到如何从其他时间格式获取UTC秒数,而且您将能够创建Cal-Heatmap期望的数据文件。 :)

答案 1 :(得分:1)

这是一个随机测试程序,用于随机生成json文件。

场景:显示提交12个月,包括当月。如果您已定义开始 - >将它指向当前月份之前的11个月,json文件应该可以正常工作。

var data = generateRandomData();

            function getRandomInt(min, max) {
                return Math.floor(Math.random() * (max - min + 1)) + min;
            }


            function generateRandomData(){
                var date = new Date();

                var mind = date.valueOf();
                var maxd = date.setMonth(date.getMonth() - 11);

                var mins = 0;
                var maxs = 40;

                var retobj = {};

                for(var i=0;i<100;i++){
                    retobj[getRandomInt(mind,maxd)/1000] = getRandomInt(mins,maxs);
                }

                return retobj;
            }

答案 2 :(得分:0)

Cal-heatmap需要JSON格式的数据

{
    "timestamp1": value1,
    "timestamp2": value2,
    "timestamp3": value3,
    ...
}

如前所述,时间戳应始终以秒为单位,而不是以毫秒为单位(默认为javascript)。

您要么将数据放在文件中,然后在data选项中传递该文件,要么直接传递javascript变量:

var d = {946705035: 25};
var cal = new CalHeatMap();
cal.init({data: d}); // For variable
cal.init({data: "path/to/file.json"}) // For file, or URI

Cal-heatmap还可以理解CSV和TSV中的文件。

如果cal-heatmap没有/无法理解您的数据:

如果数据来自变量

将您的数据在javascript中转换为JSON对象,然后再将其传递给Cal-heatmap

如果数据来自文件/ uri

设置右datatype,然后使用after afterLoadData()回调来读取文件并将文本转换为json对象。

datatype指定用于读取文件的解析器引擎。如果您的文件是json,csv或tsv格式化,请将其设置为json等...否则,将其设置为txt以将文件作为纯文本读取。

您可以研究Google Analytics示例,它说明了datadatatypeafterLoadData()回调的使用。

答案 3 :(得分:-1)

您可以直接检索JSON文件并在http://kamisama.github.io/cal-heatmap/datas-years.json检查它。