gpt4 book ai didi

javascript - d3.scale.ordinal 的问题

转载 作者:行者123 更新时间:2023-11-29 10:20:57 25 4
gpt4 key购买 nike

我有以下代码:

var dados = [
["Brasil", 20],
["Canadá", 31],
["Japão", 29],
["USA", 126],
["Inglaterra", 81],
["Nova Zelândia", 25],
["Turquia", 34]
];

dados.sort(function(a, b) { return b[1] - a[1]; });

/* Chart Area */
var chart = d3.select("body").append("svg")
.attr("class", "grafico")
.attr("width", 700)
.attr("height",300);

/* Define X-axis */
var x = d3.scale.linear()
.domain([0, d3.max(dados)[1] ])
.range([0, 500]);

/* Define Y-axis */
var domainY = dados.map(function(d) {return d[0];})
var y = d3.scale.ordinal()
.domain(domainY)
.rangeBands([0, 300]);

var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickSize(0);

/* CALL Y-AXIS */
chart.append("g")
.attr("class", "y axis")
.call(yAxis)
.attr("transform", "translate(120,0)");

/* DRAW BARS */
var bar = chart.selectAll("g.bar")
.data(dados)
.enter().append("g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(130,0)"; });

bar.append("rect")
.attr("y", y)
.attr("width", function(d) { return x(d[1]);} )
.attr("height", y.rangeBand()-6);

我的问题

当我在绘制 BARS 后调用 Y-AXIS 时,y.domain() 看起来像这样:

["USA", "Inglaterra", "Turquia", "Canadá", "Japão", "Nova Zelândia", "Brasil", 
Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2]]

并且类别(Y Axis )成对绘制名称/值:

 USA,126 
Inglaterra,81
Turquia, 34
Canadá,31
Japão,29
Nova Zelândia,25
Brasil,20

当我在绘制 BARS 之前调用 Y-AXIS 时,y.domain() 看起来相同,但类别已正确绘制:

 USA 
Inglaterra
Turquia
Canada
Japão
Nova Zelândia
Brasil

我在 Domain 上尝试了很多更改,但都没有成功。 domainY 看起来是正确的,但在将数据绑定(bind)到图表后会发生重复。我做错了什么?

最佳答案

看起来您将错误的值传递给了您的 y 尺度。而不是 attr("y", y) 你需要说 attr("y", function(d) { return y(d[0]); }) .

关于javascript - d3.scale.ordinal 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com