gpt4 book ai didi

javascript - 每个圆不同的颜色 - D3 圆包

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

我做了气泡图。但我不会为每个气泡获得不同的颜色。我怎么能那样做?我怎么能给每个圆圈不同的颜色?并且具有最高值的圆形数据应该始终位于中心,被其他气泡包围。

片段:

var diameter = 200,
format = d3.format(",d"),
color = ["#7b6888", "#ccc", "#aaa", "#6b486b"];

var bubble = d3.layout.pack()
.size([diameter, diameter]);

var svg = d3.select("#bubbleCharts").append("svg")
.attr("width", diameter + 10)
.attr("height", diameter)
.attr("class", "bubble");

var a;

d3.json("flare.json", function(error, root) {
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
.filter(function(d) { return !d.children; }))
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + 20 + "," + d.y + ")"; });

node.append("circle")
.attr("r", function(d) { return d.r+ 7; })
.style("fill", function(d) {
for(a in color){
return color[a]; };} );

node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.value+"%"; });
});

function classes(root) {
var classes = [];

function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: name, value: node.value});
}

recurse(null, root);
return {children: classes};
}

我的数据是:

   {
"name": "Spending Activity",
"children": [
{"name": "Petrol", "value": 60},
{"name": "Travel", "value": 10},
{"name": "Medical", "value": 25},
{"name": "Shopping", "value": 5}
]
}

最佳答案

您可能需要色标来获得填充颜色:

var colour = d3.scale.category20();

然后你可以像这样设置填充颜色:

 node.append("circle")
.attr("r", function(d) { return d.r+ 7; })
.style("fill", function(d, i) { return colour(i); });

至于节点的位置,包布局不提供任何影响它的功能,即你不能强制某个特定的圆圈位于中心。

关于javascript - 每个圆不同的颜色 - D3 圆包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345764/

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