Javascript D3网格线和刻度值问题
我有一个用D3制作的堆积面积图。我在实施过程中面临两个问题 1) 我只想在y轴上显示可选的记号值。例如,在我的实现中,y轴值是Javascript D3网格线和刻度值问题,javascript,css,d3.js,Javascript,Css,D3.js,我有一个用D3制作的堆积面积图。我在实施过程中面临两个问题 1) 我只想在y轴上显示可选的记号值。例如,在我的实现中,y轴值是0、20、40、60、80、100等等。但我想显示像0、40、80、120这样的值,但也要保留相应的网格线。我只想删除可选的记号值,而不删除y轴网格线 2) 我想格式化y轴,使其始终具有上方的y轴网格线。因此,在我的实现中,我希望在180值上方有一条网格线 var保证金={ 前20名, 右:30,, 底数:30, 左:40 }, 宽度=960-margin.left-m
0、20、40、60、80、100
等等。但我想显示像0、40、80、120这样的值,但也要保留相应的网格线。我只想删除可选的记号值,而不删除y轴网格线
2) 我想格式化y轴,使其始终具有上方的y轴网格线。因此,在我的实现中,我希望在180
值上方有一条网格线
var保证金={
前20名,
右:30,,
底数:30,
左:40
},
宽度=960-margin.left-margin.right,
高度=500-margin.top-margin.bottom;
var x=d3.time.scale()
.范围([0,宽度]);
变量y=d3.scale.linear()
.范围([高度,0]);
var z=d3.scale.category20c();
var xAxis=d3.svg.axis()
.比例(x)
.orient(“底部”)
var yAxis=d3.svg.axis()
.scale(y).内部标记大小(-width).外部标记大小(0)
.东方(“左”);
var stack=d3.layout.stack()
.抵销(“零”)
.价值观(功能(d){
返回数据;
})
.x(功能(d){
返回新日期(d[0]);
})
.y(功能(d){
返回d[1];
});
var area=d3.svg.area()
.插入(“基数”)
.x(功能(d){
返回x(新日期(d[0]);;
})
.y0(功能(d){
返回y(d.y0);
})
.y1(功能(d){
返回y(d.y0+d.y);
});
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
变量b=[{
数据:[
[“2016-01-20T05:31:17.000Z”,95.9,{},
[“2016-01-20T05:31:47.000Z”,95.9,{},
[“2016-01-20T05:32:17.000Z”,95.4,{},
[“2016-01-20T05:32:47.000Z”,96.1,{},
[“2016-01-20T05:33:17.000Z”,95.7,{},
[“2016-01-20T05:33:47.000Z”,95.9,{},
[“2016-01-20T05:34:17.000Z”,95.5,{},
[“2016-01-20T05:34:47.000Z”,95.9,{},
[“2016-01-20T05:35:17.000Z”,95.8,{},
[“2016-01-20T05:35:47.000Z”,95.9,{},
[“2016-01-20T05:36:17.000Z”,95.7,{},
[“2016-01-20T05:36:47.000Z”,95.7,{},
[“2016-01-20T05:37:17.000Z”,95.9,{},
[“2016-01-20T05:37:47.000Z”,95.5,{},
[“2016-01-20T05:38:17.000Z”,95.4,{},
[“2016-01-20T05:38:47.000Z”,95.8,{},
[“2016-01-20T05:39:17.000Z”,96.0,{},
[“2016-01-20T05:39:47.000Z”,96.1,{},
[“2016-01-20T05:40:17.000Z”,95.8,{},
[“2016-01-20T05:40:47.000Z”,96.0,{},
[“2016-01-20T05:41:17.000Z”,95.9,{},
[“2016-01-20T05:41:47.000Z”,94.9,{},
[“2016-01-20T05:42:17.000Z”,95.8,{},
[“2016-01-20T05:42:47.000Z”,95.9,{},
[“2016-01-20T05:43:17.000Z”,95.8,{},
[“2016-01-20T05:43:47.000Z”,96.0,{},
[“2016-01-20T05:44:17.000Z”,95.7,{},
[“2016-01-20T05:44:47.000Z”,96.0,{},
[“2016-01-20T05:45:17.000Z”,95.9,{},
[“2016-01-20T05:45:47.000Z”,96.0,{},
[“2016-01-20T05:46:17.000Z”,95.8,{},
[“2016-01-20T05:46:47.000Z”,96.0,{},
[“2016-01-20T05:47:17.000Z”,95.7,{},
[“2016-01-20T05:47:47.000Z”,96.2,{},
[“2016-01-20T05:48:17.000Z”,95.8,{},
[“2016-01-20T05:48:47.000Z”,95.9,{},
[“2016-01-20T05:49:17.000Z”,95.7,{},
[“2016-01-20T05:49:47.000Z”,95.9,{},
[“2016-01-20T05:50:18.000Z”,95.7,{},
[“2016-01-20T05:50:48.000Z”,95.8,{},
[“2016-01-20T05:51:18.000Z”,95.7,{},
[“2016-01-20T05:51:48.000Z”,95.9,{},
[“2016-01-20T05:52:18.000Z”,95.5,{},
[“2016-01-20T05:52:48.000Z”,95.9,{},
[“2016-01-20T05:53:18.000Z”,95.8,{},
[“2016-01-20T05:53:48.000Z”,95.9,{},
[“2016-01-20T05:54:18.000Z”,95.7,{},
[“2016-01-20T05:54:48.000Z”,95.9,{},
[“2016-01-20T05:55:18.000Z”,95.8,{},
[“2016-01-20T05:55:48.000Z”,95.8,{},
[“2016-01-20T05:56:18.000Z”,95.6,{},
[“2016-01-20T05:56:48.000Z”,95.7,{},
[“2016-01-20T05:57:18.000Z”,95.7,{},
[“2016-01-20T05:57:48.000Z”,95.8,{},
[“2016-01-20T05:58:18.000Z”,95.7,{},
[“2016-01-20T05:58:48.000Z”,95.7,{},
[“2016-01-20T05:59:18.000Z”,95.6,{},
[“2016-01-20T05:59:48.000Z”,95.8,{},
[“2016-01-20T06:00:18.000Z”,95.7,{},
[“2016-01-20T06:00:48.000Z”,95.7,{},
[“2016-01-20T06:01:18.000Z”,95.6,{},
[“2016-01-20T06:01:48.000Z”,95.7,{},
[“2016-01-20T06:02:18.000Z”,95.8,{},
[“2016-01-20T06:02:48.000Z”,95.8,{},
[“2016-01-20T06:03:18.000Z”,95.8,{},
[“2016-01-20T06:03:48.000Z”,95.8,{},
[“2016-01-20T06:04:18.000Z”,95.8,{},
[“2016-01-20T06:04:48.000Z”,95.8,{},
[“2016-01-20T06:05:18.000Z”,95.7,{},
[“2016-01-20T06:05:48.000Z”,95.7,{}]
],
标签:“a”
}, {
数据:[
[“2016-01-20T05:31:17.000Z”,95.9,{},
[“2016-01-20T05:31:47.000Z”,95.9,{},
[“2016-01-20T05:32:17.000Z”,95.4,{},
[“2016-01-20T05:32:47.000Z”,96.1,{},
[“2016-01-20T05:33:17.000Z”,95.7,{},
[“2016-01-20T05:33:47.000Z”,95.9,{},
[“2016-01-20T05:34:17.000Z”,95.5,{},
[“2016-01-20T05:34:47.000Z”,95.9,{},
[“2016-01-20T05:35:17.000Z”,95.8,{},
[“2016-01-20T05:35:47.000Z”,95.9,{},
[“2016-01-20T05:36:17.000Z”,95.7,{},
[“2016-01-20T05:36:47.000Z”,95.7,{},
[“2016-01-20T05:37:17.000Z”,95.9,{},
[“2016-01-20T05:37:47.000Z”,95.5,{},
[“2016-01-20T05:38:17.000Z”,95.4,{},
[“2016-01-20T05:38:47.000Z”,95.8,{},
[“2016-01-20T05:39:17.000Z”,96.0,{},
[“2016-01-20T05:39:47.000Z”,96.1,{},
[“2016-01-20T05:40:17.000Z”,95.8,{},
[“2016-01-20T05:40:47.000Z”,96.0,{},
[“2016-01-20T05:41:17.000Z”,95.9,{},
[“2016-01-20T05:41:47.000Z”,94.9,{},
[“2016-01-20T05:42:17.000Z”,95.8,{},
[“2016-01-20T05:42:47.000Z”,95.9,{},
[“2016-01-20T05:43:17.000Z”,95.8,{},
["2016-01
var yTicks = [40,80,120,160]; // Use whatever values you like.
var yAxis = d3.svg.axis()
.scale(y)
.innerTickSize(-width)
.outerTickSize(-width) // Set to -width for upper/lower grid lines
.tickValues(yTicks) // Set custom grid values.
.tickFormat(function(d) {
return yTicks.indexOf(d) % 2 ? d : ""; // Custom tickFormat to hide certain tickValues
})
.orient("left");
y.domain([0, d3.max(d3.merge(ary), function(d) {
return d.y0 + d.y;
}) * 1.1]); // Extending the extent's max value by .1 to allow for padding.
var max = y.domain()[1];
var values = [];
for(var j =0; j <=max; j=j+20){
values.push(j)
}
values.push(max)
yAxis.tickValues(values);
var last = svg.selectAll(".y .tick text")[0].length;
svg.selectAll(".y .tick text")[0].forEach(function(d, i){
if (i==last-1){
return;//for showing last tick
}
if(i%2==0)
d3.select(d).style("display", "none");//for showing alternate ticks
});