gpt4 book ai didi

javascript - d3 使 g 在同一行继续

转载 作者:行者123 更新时间:2023-11-28 01:08:13 27 4
gpt4 key购买 nike

我正在尝试创建一个 dot matrix graph从头开始。我的方法是为每个类别类型添加一个组,然后创建等量的 div。

然而,作为 block 元素的 g 开始作为一个新的垂直层。

Current Implementation

除了“g”之外,还有其他方法可以对内部元素进行分组/循环吗? (类似于“跨度”)

我当前的代码:

<body>
<div id="container" class="svg_container">
<div class="all">
</div>
<div class="graph">
</div>
</div>
</body>
<style>
#container{
width: 90%;
height: 50%;
margin: auto;
//border: 1px solid red;
padding:0;
}
.all{
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 250px;
justify-content: space-between;


}

.g{
display: flex;
flex-direction: row;
flex-wrap: wrap;

}
.cell{
width:20px;
height: 20px;
//margin-top: 2px;
border-radius: 50px;
margin: 0.5%;
border: 1px solid blue;

}
</style>
<script src='https://d3js.org/d3.v4.min.js'></script>
<script>
<body>
<div id="container" class="svg_container">
<div class="all">
</div>
<div class="graph">
</div>
</div>
</body>
<style>
#container{
width: 90%;
height: 50%;
margin: auto;
//border: 1px solid red;
padding:0;
}
.all{
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 250px;
justify-content: space-between;


}

.g{
display: flex;
flex-direction: row;
flex-wrap: wrap;

}
.cell{
width:20px;
height: 20px;
//margin-top: 2px;
border-radius: 50px;
margin: 0.5%;
border: 1px solid blue;

}
</style>
<script src='https://d3js.org/d3.v4.min.js'></script>
<script>
var colors= ["#4194CA","#31ADB9","#77D8B5","#BAE3C3","#EFFFD0"];
d3.csv("data.csv", data =>{
console.log(data);

d3.select(".graph").selectAll("g")
.data(data)
.enter()
.append("g")
.classed("g", "true")
.style("background-color", (d,i) => colors[i])
.selectAll("div")
.data(d =>[...Array(parseInt(d.All)).keys()])
.enter()
.append("div")
.classed("cell", "true")
.style("background-color", "inherit");

})

</script>

添加数据格式示例(一行):

18 - 34:"29%"
35 - 64:"42%"
65 and up:"37%"
All:"37%"

我正在尝试将 [All] 映射到颜色中的 div 数量。

最佳答案

您的主要问题是您要为每行数据创建一个父 g 元素:您希望所有 div 都在同一个父对象中。您有多种选择可供选择。一种可能是展平你的阵列,例如,从 [[1,2,...,37], [1,2,...,24], ...] 到 [0,0,...,0,1,..1, 2,...]

你的代码可以是

var colors= ["#4194CA","#31ADB9","#77D8B5","#BAE3C3","#EFFFD0"];
d3.csv("data.csv", data =>{
console.log(data);
var newdata = d3.merge(data.map((d, i)=>d3.range(parseInt(d.All)).map(v=>i)));
console.log(newdata);

d3.select(".graph").append("g").attr('class','g')
.selectAll("div")
.data(newdata)
.enter()
.append("div")
.classed("cell", "true")
.style("background-color", d=>colors[d]);

})

`

关于javascript - d3 使 g 在同一行继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255599/

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