const chart = new Chart({
element: document.querySelector('#graph'),
data: d3.csv('d1.csv', function(d){
function removeNaN(e,c){
if (e>0) {return e} else {return c}
}
return { date: d3.timeParse("%Y-%m-%d")(d.Date),
aapl : d.AAPL, tsla : d.TSLA,
aapl_sma: removeNaN( d.SMA_AAPL,d.AAPL),
tsla_sma: removeNaN( d.SMA_TSLA,d.TSLA)
}
}).then(function(data){return data})
});
你好 - 這就是我初始化我的 Chart() 物件的方式。then()回傳一個Promise我想訪問的物件。[[PromiseResult]]包含我想使用的資料陣列。我如何訪問陣列,應該從Chart()類內部還是從chart物件中完成?
這是建構式:
class Chart{
constructor(opts){
this.data = opts.data;
this.element = opts.element;
this.draw();
}
uj5u.com熱心網友回復:
固定的:
const chart = new Chart({element: document.querySelector('#graph')});
function init(data){
chart.setData(data);
}
let getD1 = d3.csv('d1.csv', function(d){
function removeNaN(e,c){
if (e>0) {return e} else {return c}
}
return { date: d3.timeParse("%Y-%m-%d")(d.Date),
aapl : d.AAPL, tsla : d.TSLA,
aapl_sma: removeNaN( d.SMA_AAPL,d.AAPL),
tsla_sma: removeNaN( d.SMA_TSLA,d.TSLA)
}
});
我正在使用滾動條,所以這是通過滾動條實作的:
var gs = d3.graphScroll()
.container(d3.select('#container'))
.graph(d3.selectAll('.container #graph'))
.eventId('uniqueId1') // namespace for scroll and resize events
.sections(d3.selectAll('.container #sections > div'))
// .offset(innerWidth < 900 ? innerHeight - 30 : 200)
.on('active', function(i){
data2get[i].then(init); //calling .then on d3.csv() passes data to my class.
chart.setColor(colors[i]);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/325996.html
標籤:javascript d3.js
