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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么條形會(huì)出現(xiàn)“倒數(shù)值”?d3.js

為什么條形會(huì)出現(xiàn)“倒數(shù)值”?d3.js

函數(shù)式編程 2022-01-01 20:04:58
我正在嘗試學(xué)習(xí)如何在 React 中使用 d3.js,但我的代碼有問(wèn)題。我正在做一個(gè)條形圖,但是條形的值是“倒置的”,例如,條形的值為 30%,但在圖表中,條形顯示為 70%(例如,100% - 30% = 70 %)。 我該如何解決?這是我的代碼:codeSandBox。我的另一個(gè)問(wèn)題是:如何更改條形的高度?我想添加一些 margin-top 來(lái)顯示 y 軸的所有內(nèi)容,但是如果我這樣做,條形仍然具有相同的高度并且與 yAxis 值不匹配
查看完整描述

2 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

這里的問(wèn)題是您正在交換y和height邏輯,它應(yīng)該是:


.attr("y", d => yScale(d.percent))

.attr("height", d => height - margin.bottom - margin.top - yScale(d.percent)) 

或者,如果您將工作高度設(shè)置為...


height = totalHeight - margin.bottom - margin.top

...它可以只是:


.attr("y", d => yScale(d.percent))

.attr("height", d => height - yScale(d.percent)) 

最重要的是(這解決了您的第二個(gè)問(wèn)題),您錯(cuò)誤地使用了 Bostock 的保證金約定。您應(yīng)該g根據(jù)邊距翻譯該組,然后將所有小節(jié)附加到該已翻譯組中,而無(wú)需再次翻譯它們。此外,將軸的組附加到該g組。


話雖如此,這是具有這些更改的代碼:

const data = [{

    year: 2012,

    percent: 50

  },

  {

    year: 2013,

    percent: 30

  },

  {

    year: 2014,

    percent: 90

  },

  {

    year: 2015,

    percent: 60

  },

  {

    year: 2016,

    percent: 75

  },

  {

    year: 2017,

    percent: 20

  }

];


const height = 300;

const width = 370;

const margin = {

  top: 20,

  right: 10,

  bottom: 20,

  left: 25

};


const xScale = d3.scaleBand()

  .domain(data.map(d => d.year))

  .padding(0.2)

  .range([0, width - margin.right - margin.left]);


const yScale = d3

  .scaleLinear()

  .domain([0, 100])

  .range([height - margin.bottom - margin.top, 0]);


const svg = d3

  .select("body")

  .append("svg")

  .attr("width", width)

  .attr("height", height)

  .style("margin-left", 10);


const g = svg

  .append("g")

  .attr("transform", `translate(${margin.left}, ${margin.top})`);


g

  .selectAll("rect")

  .data(data)

  .enter()

  .append("rect")

  .attr("x", d => xScale(d.year))

  .attr("y", d => yScale(d.percent))

  .attr("width", xScale.bandwidth())

  .attr("height", d => height - margin.bottom - margin.top - yScale(d.percent))

  .attr("fill", "steelblue")



g.append("g")

  .call(d3.axisLeft(yScale));


g.append("g")

  .call(d3.axisBottom(xScale))

  .attr(

    "transform",

    `translate(0, ${height - margin.bottom - margin.top})`

  );

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>


查看完整回答
反對(duì) 回復(fù) 2022-01-01
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

svg

      .selectAll("rect")

      .data(data)

      .enter()

      .append("rect")

      .attr("x", d => xScale(d.year))

      .attr("y", d => height - yScale(100-d.percent))

      .attr("width", xScale.bandwidth())

      .attr("height", d => yScale(100-d.percent))

      .attr("fill", "steelblue")

      .attr("transform", `translate(${margin.left}, -${margin.bottom})`);

你需要減去 100 的百分比


工作:https : //codesandbox.io/s/crimson-microservice-8kjqd


查看完整回答
反對(duì) 回復(fù) 2022-01-01
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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