第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算寬度以在 D3.js 中創(chuàng)建連續(xù)水平條

計算寬度以在 D3.js 中創(chuàng)建連續(xù)水平條

ibeautiful 2023-07-06 17:20:15
我有一個水平時間線,我在 D3.js 中繪制隨時間變化的事件:現(xiàn)在,我想“填充”事件之間的間隙,因此計算每個條形的寬度(類似于甘特圖)。這就是我想要實現(xiàn)的目標(biāo):我的邏輯是讓 i+1 的位置減去位置,如下所示:.attr('width', function(d,i){         barWidth = xScale(barData2[i+1].eventTime) - xScale(barData2[i].eventTime);        return barWidth;     })(其中 barWidth 是空變量,barData2 是數(shù)據(jù))這完成了工作,但也破壞了代碼,因為它不會繼續(xù)代碼的其余部分:我嘗試過以各種方式計算這一點,但沒有成功。有什么建議么?var barData2 = [{  eventTime: new Date("Mon May 11 2020 18:25:43 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Mon May 11 2020 18:34:14 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Mon May 11 2020 22:10:42 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Mon May 11 2020 22:14:46 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Mon May 11 2020 22:22:25 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Mon May 11 2020 22:30:35 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Tue May 12 2020 00:40:00 GMT+0100 (British Summer Time)")}, {  eventTime: new Date("Tue May 12 2020 05:00:57 GMT+0100 (British Summer Time)")}];var barWidth = 0;var height = 200,  width = 900,  barHeight = 10;var xScale = d3.time.scale()  .domain([barData2[0].eventTime, barData2[(barData2.length - 1)].eventTime])  .range([0, width - 85]);var xScale2 = d3.time.scale()  .domain([barData2[0].eventTime, barData2[(barData2.length - 1)].eventTime])  .range([0, width - 85]);var xAxisTicks = d3.axisBottom(xScale)  .ticks(d3.timeHour.every(1));var toolTip = d3.select('body')  .append('div')  .style('position', 'absolute')  .style('padding', '0 10px')  .style('background', 'white')  .style('opacity', 0);d3.select('#viz').append('svg')  .attr('width', width)  .attr('height', height)  .style('background', '#aaa')  .append('g')  .selectAll('rect').data(barData2)  .enter().append('rect')  .attr('y', function(d, i) {    return i * barHeight;  })
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

實現(xiàn)這一點的最簡單方法是提前稍微轉(zhuǎn)換一下數(shù)據(jù)。請注意,如果我們有n事件,我們想要繪制n - 1條形。


var barData2 = [{

  eventTime: new Date("Mon May 11 2020 18:25:43 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Mon May 11 2020 18:34:14 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Mon May 11 2020 22:10:42 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Mon May 11 2020 22:14:46 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Mon May 11 2020 22:22:25 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Mon May 11 2020 22:30:35 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Tue May 12 2020 00:40:00 GMT+0100 (British Summer Time)")

}, {

  eventTime: new Date("Tue May 12 2020 05:00:57 GMT+0100 (British Summer Time)")

}];


// .slice(1) removes the first entry, because we have n events,

// we want to draw n-1 bars

barData2Processed = barData2.slice(1).map(function(d, i) {

  return {

    // Note that because we removed the first entry, this is

    // actually the previous element, not the current one

    start: barData2[i].eventTime,

    end: d.eventTime

  }

});


var barWidth = 0;

var height = 200,

  width = 900,

  barHeight = 10;


var xScale = d3.time.scale()

  .domain([barData2[0].eventTime, barData2[(barData2.length - 1)].eventTime])

  .range([0, width - 85]);


var xAxisTicks = d3.axisBottom(xScale)

  .ticks(d3.timeHour.every(1));


var toolTip = d3.select('body')

  .append('div')

  .style('position', 'absolute')

  .style('padding', '0 10px')

  .style('background', 'white')

  .style('opacity', 0);


d3.select('#viz').append('svg')

  .attr('width', width)

  .attr('height', height)

  .style('background', '#aaa')


  .append('g')

  .selectAll('rect').data(barData2Processed)

  .enter().append('rect')

  .attr('y', function(d, i) {

    return i * barHeight;

  })

  .attr('height', barHeight)

  .attr('width', function(d, i) {

    return xScale(d.end) - xScale(d.start);

  })

  .attr('x', function(d, i) {

    return xScale(d.start);

  })



xGuide = d3.select('#viz svg').append('g')

  .attr('transform', 'translate(0,' + (height - 25) + ')')

  .call(xAxisTicks);

<script src="https://d3js.org/d3.v3.min.js"></script>

<script src="https://d3js.org/d3.v4.js"></script>

<script src="https://d3js.org/d3-time.v2.min.js"></script>

<script src="https://d3js.org/d3-time-format.v3.min.js"></script>


<div id="viz"></div>


查看完整回答
反對 回復(fù) 2023-07-06
  • 1 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號