Javascript 时间总是成为纪元时间并且超出域范围
我有这种JSONJavascript 时间总是成为纪元时间并且超出域范围,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&
{"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.问题中以图片形式发布代码或数据。