- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图根据数组中的行数显示条数。目前显示的条数由数组中元素的数量决定。例如,[2,3,4,5],将显示 4 个堆叠条。但我想要 data = [[4, 8, 10],[50, 20, 20]] 这给了我 2 个堆叠的条形。
我的代码:
var margin = { top: 30, right: 30, bottom: 40, left: 50}
var data = [[4, 8, 10],
[50, 30, 20]
,[4, 18, 15],
[50, 20, 20]
];
var remapped = data.map(function(row) {
return row.map(function(col,i){
return { x: i, y: col };
});
});
var w = 200,
h = 200;
var svg = d3.select(".chart").append("svg:svg")
.attr("width", 4000)
.attr("height", 300 )
.append("svg:g")
.attr("transform", "translate(0,"+h+")");
var x = d3.scale.ordinal().rangeRoundBands([0, w], 0.4, 0.03)
var y = d3.scale.linear().range([0, h])
var color = d3.scale.ordinal()
.range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]).domain(data[0].map(function(d,i){return i;}));
var chartContainer = svg.append('g').attr('class', 'bar-chart-container');
var stacked = d3.layout.stack()(remapped)
x.domain(stacked[0].map(function(d) { return d.x; }));
y.domain([0, d3.max(stacked[stacked.length - 1], function(d) { return d.y0 + d.y; })]);
var group = chartContainer.selectAll("svg")
.data(stacked)
.enter().append("svg:g")
.attr("class", "group")
.style("fill", function(d, i) { return color(i); })
var rect = group.selectAll("rect")
.data(function(d){return d;})
.enter().append("svg:rect")
.attr("x", function(d, i) {; return x(d.x); })
.attr("y", function(d,i) { return -y(d.y0) - y(d.y); })
.attr("height", function(d) { return y(d.y); })
.attr("width", x.rangeBand());
非常感谢您花时间阅读本文。
最佳答案
现在,如果你有这个数组:
var data = [
[4, 8, 10],
[50, 20, 20]
];
您的重新映射
将是一个包含 2 个数组的数组(每个数组有 3 个对象),如下所示:
var remmaped = [
[{ x: 0, y: 4},
{ x: 1, y: 8},
{ x: 2, y: 10},
],
[{ x: 0, y: 50},
{ x: 1, y: 20},
{ x: 2, y: 20},
]
];
这将为您提供预期的结果:3 组堆叠条形图,每组有 2 个条形图。
但是,如果我理解正确的话,您希望 [4, 8, 10] 成为第一组的值,[50, 20, 20] 成为第二组的值,即只有 2堆叠条(每条有 3 个条)。您可以做两件事来实现这一目标:
重新映射
变量的创建方式;我做了第二个,使用这个函数转置矩阵:
var newData = data[0].map(function(col, i) {
return data.map(function(row) {
return row[i]
})
});
然后我们使用 newData
创建remapped
,它现在是一个包含 3 个数组,每个数组有 2 个对象的数组。
在这个 fiddle 中,使用数据[[4, 8, 10], [50, 20, 20]]
你有2组堆叠条:https://jsfiddle.net/gerardofurtado/f8j4jm5n/
关于javascript - D3 渲染堆积条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902580/
我使用 Dojo fadeIn 和 fadeOut 以及一个计时器旋转了三个堆叠图像。只有最后一个的 href 可用。是否也可以旋转 href? 这是它的 CSS: #main-slides
给定一个 numpy 数组,我想总结统一的元素 block 以形成一个新的、更小的数组。它与分箱类似,但不是按频率分箱。除了通过示例(如下)之外,我不确定如何描述它。 问题:是否有用于此的函数或更清晰
我正在尝试实现某种按钮控制的幻灯片放映,其中包括用于页面顶部全 Angular 图片的 div,用于页面顶部的 div页面底部的另一张全 Angular 图片和中央内容的最终 div(包括控制“幻
嘿,我正在使用 D3JS 作为图表库,我真的很想利用气泡图中的超酷功能。上主D3JS chart站点下面的Bubble Chart用来比较两组数据: Bubble Chart . 我想知道是否有人真的
我是一名优秀的程序员,十分优秀!