我是d3 js的新手。我正在寻找像this这样的图表,在高等图表中完成。在highcharts中,它被称为列范围图。有没有办法实现这一目标。
当我在谷歌搜索时,我能得到的最好的东西是basic bar chart。任何人都可以帮助我如何使它成为一个远程图表吗?
答案 0 :(得分:2)
想象一下,我有这样的数据集:
//these are the various categories
var categories = ['', 'Accessories', 'Audiophile', 'Camera & Photo', 'Cell Phones', 'Computers', 'eBook Readers', 'Gadgets', 'GPS & Navigation', 'Home Audio', 'Office Electronics', 'Portable Audio', 'Portable Video', 'Security & Surveillance', 'Service', 'Television & Video', 'Car & Vehicle'];
//these are the various categories cost
var dollars = [[100,213], [75,209], [50,190], [100,179], [140,156], [138, 209], [90, 190], [65,179], [100, 213], [100, 209], [50, 190], [76,179], [45,156], [80,209], [75,190], [55,190]];
此处数据集Car&Vehicle
的费用范围为55$ to 190$
。此处Television & Video
的费用范围为75$ to 190$
,具体取决于质量。
让x缩放。
var xscale = d3.scale.linear()
.domain([10, 250])//minimum cast can be 10$ and maximum cost 250$
.range([0, 722]);
让我们制作矩形条。
var chart = canvas.append('g')
.attr("transform", "translate(150,0)")
.attr('id', 'bars')
.selectAll('rect')
.data(dollars)
.enter()
.append('rect')
.attr('height', 19)
.attr({
'x': function(d) {
return xscale(d[0]);//this defines the start position of the bar
},
'y': function(d, i) {
return yscale(i) + 19;
}
})
.style('fill', function(d, i) {
return colorScale(i);
})
.attr('width', function(d) {
return 0;
});
现在进行过渡,条形的宽度为:
var transit = d3.select("svg").selectAll("rect")
.data(dollars)
.transition()
.duration(1000)
.attr("width", function(d) {
return xscale(d[1]) - xscale(d[0]);//width of the bar will be upper range - lower range.
});
完整的工作代码here。
答案 1 :(得分:-2)
您指向基本条形图的链接不起作用。这看起来像一个水平的条形图,其中有许多exapmles。这是一个:http://bl.ocks.org/mbostock/2368837