Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 时间总是成为纪元时间并且超出域范围_Javascript_Json_D3.js - Fatal编程技术网

Javascript 时间总是成为纪元时间并且超出域范围

Javascript 时间总是成为纪元时间并且超出域范围,javascript,json,d3.js,Javascript,Json,D3.js,我有这种JSON {"Arsitek":[{"tanggal":"2015-01-01","jumlah":286},{"tanggal":"2015-02-01","jumlah":601},{"tanggal":"2015-03-01","jumlah":845},{"tanggal&

我有这种JSON

{"Arsitek":[{"tanggal":"2015-01-01","jumlah":286},{"tanggal":"2015-02-01","jumlah":601},{"tanggal":"2015-03-01","jumlah":845},{"tanggal":"2015-04-01","jumlah":550},{"tanggal":"2015-05-01","jumlah":500},{"tanggal":"2015-06-01","jumlah":201},{"tanggal":"2015-07-01","jumlah":73},{"tanggal":"2015-08-01","jumlah":503},{"tanggal":"2015-09-01","jumlah":884},{"tanggal":"2015-10-01","jumlah":782},{"tanggal":"2015-11-01","jumlah":393},{"tanggal":"2015-12-01","jumlah":150}],"DKV":[{"tanggal":"2015-01-01","jumlah":94},
我正在使用fetchapi,然后将JSON传递给这段代码

function perbulan(dataset,target,terlambat){
//if(terlambat)target+='Terlambat'
document.getElementById(target).innerHTML=''
let width = 1100,height = 650
let color = d3.scaleOrdinal().range(['#334455', '#6c1f22', '#e3e8e1', '#6b112f', '#3C2F77',
                                    '#123456', '#22c1f6', '#3e7e9e', '#b6f121', '#32C6EA',
                                    '#A60F2B', '#648C85', '#B3F2C9', '#528C18', '#C3F25C',
                                    '#6Af0B2', '#46C858', '#3B2F9C', '#25C881', '#3C2FC5',
                                    '#8A23B1', '#2A81B3', '#BADCFE', '#917355', '#A1B9F5'])

let parsetime = d3.timeParse("%Y-%m-%d")
let svg = d3.select(`#${target}`)
            .append('svg')
            .attr('width', width)
            .attr('height', height)

let xS = d3.scaleTime()
let yS = d3.scaleLinear()
let valueline = d3.line().x(d=>d.tanggal).y(d=>d.jumlah)

let axis=true;
Object.keys(dataset).forEach((data,i)=>{
    let res=dataset[data].map(x=>({'jumlah':+x.jumlah,'tanggal':parsetime(x.tanggal)}))
    //console.log(res)
    xS.domain([d3.min(res, d=>d.tanggal),d3.max(res, d=>d.tanggal)]).range([100,1000])
    yS.domain([0,d3.max(res, d=>d.jumlah)]).range([600,20])

    svg.append("path")   
        .datum(res)
        .attr("d", valueline)
        .attr("class","line")
        .style("stroke", color(i))//change to iterator later
        
    if(axis){
        svg.append('g')
            .attr("transform", "translate(0,600)")
            .call(d3.axisBottom(xS))
        svg.append("g")
            .attr("transform", "translate(100,-1)")
            .call(d3.axisLeft(yS))
        axis=false
    }
})
}
但当我检查元素时,该行不会显示:

<path d="M1420045200000,286L1422723600000,601L1425142800000,845L1427821200000,550L1430413200000,500L1433091600000,201L1435683600000,73L1438362000000,503L1441040400000,884L1443632400000,782L1446310800000,393L1448902800000,150" class="line" style="stroke: rgb(51, 68, 85);"></path>

当我高亮显示它时,该线位于坐标288570000X811处,因此它超出范围

我试图手动使用
新日期(d.tanggal)
,但它没有任何作用。
有什么想法吗?

你得用你的天平。目前,管线生成器中没有刻度:

let valueline = d3.line().x(d=>d.tanggal).y(d=>d.jumlah)
相反,它应该是:

let valueline = d3.line().x(d => xS(d.tanggal)).y(d => yS(d.jumlah))
//scales here--------------------^---------------------^
以下是仅包含该更改的代码:

var数据集={
“阿西特克”:[{
“tanggal”:“2015-01-01”,
“朱姆拉”:286
}, {
“tanggal”:“2015-02-01”,
“朱姆拉”:601
}, {
“tanggal”:“2015-03-01”,
“朱姆拉”:845
}, {
“tanggal”:“2015-04-01”,
“朱姆拉”:550
}, {
“tanggal”:“2015-05-01”,
“朱姆拉”:500
}, {
“tanggal”:“2015-06-01”,
“朱姆拉”:201
}, {
“tanggal”:“2015-07-01”,
“朱姆拉”:73
}, {
“tanggal”:“2015-08-01”,
“朱姆拉”:503
}, {
“tanggal”:“2015-09-01”,
“朱姆拉”:884
}, {
“tanggal”:“2015-10-01”,
“朱姆拉”:782
}, {
“tanggal”:“2015-11-01”,
“朱姆拉”:393
}, {
“tanggal”:“2015-12-01”,
“朱姆拉”:150
}]
};
设宽度=1100,
高度=650
3.5C1F22“,ţ6c1f22',”e3e5E85E3 8E1“,,,3555e33E8E38E1“,,,35555566417F',,ş6B 112F',,353.3.3.Scale色色=3.3.3.3.3.3.ScaleLe色色=3.3.3.3.3.3.Sca利利利利利利利利利利利诺....规模规模规模.规模(.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.“,”6Af0B2“,”46C858“,”3B2F9C“,”25C881“,”3C2FC5“,”8A23B1“,”2A81B3“,”BADCFE“,”917355“,”A1B9F5“)
让parsetime=d3.timeParse(“%Y-%m-%d”)
让svg=d3.select(“body”)
.append('svg')
.attr('width',width)
.attr('height',height)
设xS=d3.scaleTime()
设yS=d3.scaleLinear()
设valueline=d3.line().x(d=>xS(d.tanggal)).y(d=>yS(d.jumlah))
设axis=true;
Object.keys(数据集).forEach((数据,i)=>{
设res=dataset[data].map(x=>({
“jumlah”:+x.jumlah,
“tanggal”:parsetime(x.tanggal)
}))
//console.log(res)
xS.domain([d3.min(res,d=>d.tanggal),d3.max(res,d=>d.tanggal)]).range([1001000])
域([0,d3.max(res,d=>d.jumlah)])。范围([600,20]);
追加(“路径”)
.基准面(res)
.attr(“d”,valueline)
.attr(“类”、“行”)
.style(“笔划”,颜色(i))//稍后更改为迭代器
如果(轴){
append('g')
.attr(“转换”、“翻译(0600)”)
.call(d3.axisBottom(xS))
svg.append(“g”)
.attr(“变换”、“平移(100,-1)”)
.呼叫(d3.左(yS))
轴=假
}
})
.line{
填充:无;
笔画:水鸭;
笔画宽度:2px;
}

请将您的代码和json作为文本。将您的json和代码作为文本发布,而不是图像。更改后,我使用图像,因为它更清晰。很抱歉给您带来麻烦,谢谢您的编辑。你不应该在S.O.问题中以图片形式发布代码或数据。