我的项目是以离散的间隔测量信号功率水平,我试图在条形图中表示。由于频率是离散的,我试图使用数组设置刻度值,当我提供[1,2]时它们工作正常,但是当我提供更大的值时它会很奇怪。
下面是代码,我现在只是尝试使用本地数据,因为我是D3的新手。
<body>
<script type="text/javascript">
//Width and height
var w = 1000;
var h = 500;
var barPadding = 1; // padding space to distinguish bars
var axisSpace = 25;
var dataset =[200,40];
var tix = [55,57]
// SCALES
var xscale = d3.scale.linear()
.domain([0, dataset.length])
.range([0,w]);
var yscale = d3.scale.linear()
.domain([0,d3.max(dataset,function(d){return d;})])
.range([0,h]);
//AXES
var xAxis = d3.svg.axis()
.scale(xscale)// define simple axis function with scales
.orient("top") // define the orientation of labels
.tickValues(tix);
var yAxis = d3.svg.axis(yscale);
//Create SVG element
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h)
svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", function(d, i) {
return i * (w / dataset.length);
})
.attr("y", function(d) {
return h - yscale(d);
})
.attr("width", w / dataset.length - barPadding)
.attr("height", function(d) {
return (yscale(d) - axisSpace);
})
.attr("fill", function(d) {
return "rgb(0, 0, " + (d * 550) + ")";
});
// call axis function on svg element
svg.append("g") // append new group to save all axes
.attr("class", "axis") // assign it a class so we can target it using CSS
.attr("transform", "translate(0, 477)") // 477 = h - axisSpace + 2
.call(xAxis); // call axis function
</script>
</body>
答案 0 :(得分:1)
这一行:
.domain([0, dataset.length])
将您的域名从0设置为2.您的滴答声:
var tix = [55,57]
不在此域内,因此您不会获得任何记号。
也许你想要:
.domain(tix)
示例here。