gpt4 book ai didi

javascript - 在 D3 中为每个栏添加不同的颜色

转载 作者:行者123 更新时间:2023-11-29 19:16:09 25 4
gpt4 key购买 nike

我正在使用 d3 库来显示条形图,每个条形都有不同的颜色。这是我的代码-

<!DOCTYPE html>
<meta charset="utf-8">
<style>

.chart div {
font: 10px sans-serif;
background-color: steelblue;
text-align: right;
padding: 3px;
margin: 1px;
color: white;
}

</style>
<div class="chart"></div>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>

var data = [{"label":"Recommended", "value":60},{"label":" You", "value":60},{"label":"Peers","value":40}];
var color = d3.scale.ordinal().range(["#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);

var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, 420]);



d3.select(".chart")
.selectAll("div")
.data(data)
.enter().append("div")
// .attr("width",400)
// .attr("depth",400)
.style("width", function(d) { return d.value + "px"; })
// .style("fill", function(d,i) { return data[i].color;})
.text(function(d,i) { return data[i].label; });

</script>

我无法为每个栏获得不同的颜色。谁能帮我解决这个问题。

最佳答案

您正在修改 fill 样式,但是您有 div 元素,因此您需要 background-color 属性。

另外,您应该使用您的颜色比例范围作为一个函数来获得正确的结果。

var data = [{
"label": "Recommended",
"value": 60
}, {
"label": " You",
"value": 60
}, {
"label": "Peers",
"value": 40
}];
var color = d3.scale.ordinal().range(["#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);

var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, 420]);



d3.select(".chart")
.selectAll("div")
.data(data)
.enter().append("div")
// .attr("width",400)
// .attr("depth",400)
.style("width", function(d) {
return d.value + "px";
})
.style("background-color", function(d, i) {
return color(i);
})
.text(function(d, i) {
return data[i].label;
});
.chart div {
font: 10px sans-serif;
text-align: right;
padding: 3px;
margin: 1px;
color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.0/d3.min.js"></script>
<div class="chart"></div>

关于javascript - 在 D3 中为每个栏添加不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186840/

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