gpt4 book ai didi

javascript - 在矩形中插入文本 - D3.js

转载 作者:行者123 更新时间:2023-12-03 10:16:18 24 4
gpt4 key购买 nike

我正在尝试基于 json 创建一个矩形。

下面是 fiddle -

window.onload = function () { 
var links = [
{ "source": "Initiate", "target": "Dept Approver", "status" : "completed", "type" : "process" },
{ "source": "Dept Approver", "target": "Section Approver", "status" : "completed", "type" : "process" },
{ "source": "Section Approver", "target": "Division Approver", "status" : "completed", "type" : "process" },
{ "source": "Division Approver", "target": "End", "status" : "pending", "type" : "process" }];


var svgContainer = d3.select("#chart").append("svg")
.attr("width", 800)
.attr("height", 800)
.style("background", "#93A1A1");

var rectangles = svgContainer.selectAll("rect")
.data(links)
.enter()
.append("rect");

var x = 50;
var y = 50;

var rectAttributes = rectangles
.attr("x", function (d) {
x = x + 150;
return x;
})
.attr("y", function (d) { return y; })
.attr("height", function (d) { return '100'; })
.attr("width", function (d) { return '100'; })
.style("fill", function(d) {
if (d.status == "completed") {
return "green";
};
});

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<body>
<h2>D3</h2>


<div id="chart"></div>
</body>

下一步是将 json 的“source”属性中的文本覆盖在矩形上。例如,第一个矩形应具有“Initiate”标签,第二个矩形内的标签应为“Dept Approver”等。

我尝试使用 .text 但它不起作用。有人可以帮我解决这个问题吗?

谢谢

最佳答案

我怀疑您正确使用了文本,但没有正确访问您的数据 (d)。不管怎样,下面是一个如何向矩形添加标签的示例:

window.onload = function() {
var links = [{
"source": "Initiate",
"target": "Dept Approver",
"status": "completed",
"type": "process"
}, {
"source": "Dept Approver",
"target": "Section Approver",
"status": "completed",
"type": "process"
}, {
"source": "Section Approver",
"target": "Division Approver",
"status": "completed",
"type": "process"
}, {
"source": "Division Approver",
"target": "End",
"status": "pending",
"type": "process"
}];


var svgContainer = d3.select("#chart").append("svg")
.attr("width", 800)
.attr("height", 800)
.style("background", "#93A1A1");

var rectangles = svgContainer.selectAll("rect")
.data(links)
.enter()
.append("rect");

var x = 50;
var y = 50;

var rectAttributes = rectangles
.attr("x", function(d) {
x = x + 150;
return x;
})
.attr("y", function(d) {
return y;
})
.attr("height", function(d) {
return '100';
})
.attr("width", function(d) {
return '100';
})
.style("fill", function(d) {
if (d.status == "completed") {
return "green";
};
});

var tX = 100;
var tY = 100;

var labels = svgContainer.selectAll('text')
.data(links)
.enter()
.append('text')
.text(function(d) {
return d.source; // d = links, you can access it just like any json object
})
.attr("x", function(d, i) {
tX = tX + 150;
return tX;
})
.attr("y", function(d) {
return tY;
})
.attr("font-size", "11px")
.attr("fill", "white")
.attr("text-anchor", "middle");

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

<body>
<h2>D3</h2>


<div id="chart"></div>
</body>

关于javascript - 在矩形中插入文本 - D3.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854067/

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