yAxisBarが正しいデータを表示しない理由D3

VenRus

d3を使用して簡単な棒グラフを作成しました。ただし、軸バーのY配列にすべてのデータ項目が正しく表示されているわけではありません。

最後に表示されるデータ項目は「28」ではなく「29」である必要があります。私の場合、最後のアイテムとして「28」が表示されているためです。

この問題を解決するには、何を追加または変更する必要がありますか?

これが私が「Yスケール」を作成する方法です

var yMax = d3.max(data, data => data.devices);
   const y = d3.scaleLinear()
       .domain([0, yMax])
       .range([height, margin.top])
   const yAxis = d3.axisLeft()
       .scale(y) 

これが私のコードです

var data1 = [ 
    {flavor: 'group 1', devices: 29},
    {flavor: 'group 2', devices: 15},
    {flavor: 'group 3', devices: 6}, 
    {flavor: 'group 4', devices: 23},
    {flavor: 'group 5', devices: 17},
    {flavor: 'group 6', devices: 5},
    {flavor: 'group 7', devices: 14},
    {flavor: 'group 8', devices: 13},
    {flavor: 'group 9', devices: 19}
   ];


const devicesByFlavor = (data) => {

    var colors = ["#49D490", "#F77C7C", "#249AFF", "#EFB93F", "#FB88AF", "#76D3C1", "#94D6FF", "#D073E0", "#CFDCE5", 'dodgerblue', 'dodgerblue'];

    var width = 900,
        height = 300;

    var margin = {
        top: 55,
        left: 50,
        right: 50,
        bottom: 20
    }

    const svgChart = d3
        .select('div#chart-container')
        .append('svg')
        .attr('class', 'barChart')
        .attr('preserveAspectRatio', 'xMinYMin meet')
        .attr('viewBox', '0 0 885 350')

    //   XXXXXXXXXXXXXXXXXXXXX
    const xScale = d3.scaleBand()
        .domain(data.map(data => data.flavor))
        .range([margin.left, width - margin.right])
        .padding(0.9)

    const xAxis = d3.axisBottom()
        .scale(xScale)

    //   YYYYYYYYYYYYYYYYYYYYY
    var yMax = d3.max(data, data => data.devices)
    const yScale = d3.scaleLinear()
        .domain([0, yMax])
        .range([height, margin.top])
    const yAxis = d3.axisLeft()
        .scale(yScale)

    const rectBars = svgChart.selectAll('g')
    const bar = rectBars.data(data).enter()

    //Append xAxis
    var xAxisBar = svgChart
        .append('g')
        .attr('class', 'x-axis')
        .call(xAxis)
        .attr('transform', 'translate(0,' + height + ')')
    var xAxisBarPath = xAxisBar.select('path')
        .attr('stroke', 'lightgray')
    var xAxisBarText = xAxisBar.selectAll('text')
        .attr('fill', (d, i) => colors[i])
    var xAxisBarLine = xAxisBar.selectAll('line')
        .attr('stroke', 'transparent')
    //Add Extra Legend  
    var extraLegend = d3.selectAll('.tick')
        .data(data)
        .append('text')
        .text((d) => {
            return `${d.devices} devices`
        })
        .attr('fill', 'black')
        .attr('transform', 'translate(0 , 30)')
        .attr('font-size', '12')

    //Append yAxis  
    var yAxisBar = svgChart
        .append('g')
        .attr('class', 'y-axis')
        .attr('transform', `translate(${margin.left}, 0)`)
        .call(yAxis)

    const yAxisGrid = d3.axisLeft(yScale).tickFormat('').tickSize(100 - width)
    svgChart.append('g')
        .attr('class', 'y-axis-gridLine')
        .attr('transform', `translate(${margin.left},0)`)
        .call(yAxisGrid)

    //Append bars  
    bar
        .append('rect')
        .attr('class', 'bar')
        .attr('width', xScale.bandwidth())
        .attr('x', d => xScale(d.flavor))
        .attr('y', d => yScale(0))
        .attr('height', d => height - yScale(0))
        .attr('fill', (d, i) => colors[i])

    bar
        .selectAll('rect')
        .transition()
        .duration(800)
        .attr("y", function (d) { return yScale(d.devices) })
        .attr("height", function (d) { return height - yScale(d.devices) })
        .delay(function (d, i) { return (i * 100) })
}


devicesByFlavor(data1)

これがdemo_linkです

SmokeyShakers

nice()Yスケールに追加します。

const yScale = d3.scaleLinear()
    .domain([0, yMax])
    .range([height, margin.top])
    .nice()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

D3データの更新が正しく機能しない

分類Dev

D3チャートが正しく表示されない

分類Dev

React + D3:散布図のYAXIS上のデータが正しく表示されない

分類Dev

PHPforループが正しいデータを表示しない

分類Dev

JSONがデータを表示しない理由

分類Dev

datagridがデータを行に表示しない理由

分類Dev

BootstrapModalが正しいデータを表示しない

分類Dev

UITableVIewがスクロール後にデータを正しく表示しない理由

分類Dev

d3.hexbin データ ポイントが正しく表示されない

分類Dev

dataTableがajaxデータを正しく表示しない

分類Dev

D3折れ線グラフにツールチップとデータポイントが正しく表示されない

分類Dev

d3ツリーマップグラフィックがenter()およびexit()データを正しく認識しない

分類Dev

d3チャートが正しく更新されない

分類Dev

VueJSコンポーネントが正しいデータを表示しない

分類Dev

d3js:最初のバーのデータが正しく表示されないのはなぜですか?

分類Dev

すべての要素を示していないD3データ

分類Dev

D3 + Leaflet CircleSVG要素が色を表示しない

分類Dev

D3: `bubble.nodes`が正しいグラフィックデータをデータセットに適用していません

分類Dev

C3.jsPIEが有効なデータで正しく表示されない

分類Dev

D3円グラフのラベルデータが機能しない

分類Dev

X軸ラベルがd3で正しく表示されない

分類Dev

ListFragmentがデータを表示しない

分類Dev

$ scopeがデータを表示しない

分類Dev

基になるデータを更新した後、D3forceCollideが正しく機能しない

分類Dev

d3:DOMを更新しないデータセットを更新する

分類Dev

foreach関数がデータベース値を正しく表示しない

分類Dev

データ値が正しくなくても正しいボタンを表示できない

分類Dev

複数のデータソースを使用するとD3関数が機能しない

分類Dev

CrystalReportに正しいデータが表示されない

Related 関連記事

  1. 1

    D3データの更新が正しく機能しない

  2. 2

    D3チャートが正しく表示されない

  3. 3

    React + D3:散布図のYAXIS上のデータが正しく表示されない

  4. 4

    PHPforループが正しいデータを表示しない

  5. 5

    JSONがデータを表示しない理由

  6. 6

    datagridがデータを行に表示しない理由

  7. 7

    BootstrapModalが正しいデータを表示しない

  8. 8

    UITableVIewがスクロール後にデータを正しく表示しない理由

  9. 9

    d3.hexbin データ ポイントが正しく表示されない

  10. 10

    dataTableがajaxデータを正しく表示しない

  11. 11

    D3折れ線グラフにツールチップとデータポイントが正しく表示されない

  12. 12

    d3ツリーマップグラフィックがenter()およびexit()データを正しく認識しない

  13. 13

    d3チャートが正しく更新されない

  14. 14

    VueJSコンポーネントが正しいデータを表示しない

  15. 15

    d3js:最初のバーのデータが正しく表示されないのはなぜですか?

  16. 16

    すべての要素を示していないD3データ

  17. 17

    D3 + Leaflet CircleSVG要素が色を表示しない

  18. 18

    D3: `bubble.nodes`が正しいグラフィックデータをデータセットに適用していません

  19. 19

    C3.jsPIEが有効なデータで正しく表示されない

  20. 20

    D3円グラフのラベルデータが機能しない

  21. 21

    X軸ラベルがd3で正しく表示されない

  22. 22

    ListFragmentがデータを表示しない

  23. 23

    $ scopeがデータを表示しない

  24. 24

    基になるデータを更新した後、D3forceCollideが正しく機能しない

  25. 25

    d3:DOMを更新しないデータセットを更新する

  26. 26

    foreach関数がデータベース値を正しく表示しない

  27. 27

    データ値が正しくなくても正しいボタンを表示できない

  28. 28

    複数のデータソースを使用するとD3関数が機能しない

  29. 29

    CrystalReportに正しいデータが表示されない

ホットタグ

アーカイブ