大佬教程收集整理的这篇文章主要介绍了需要隐藏或删除 d3 图表中的替代 x 轴值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在 x 轴上,我只需要显示诸如 - 0.5、1.5、2.5、3.5 之类的值并隐藏/删除其他值标签(0.0、1.0、2.0 等)。我使用的是 D3 v3。
图表输出应如下图所示
这是代码:
var data = [{
label: "Data Set 1",x: [0,1,2,3,4],y: [0,4]
},{
label: "Data Set 2",4,9,16]
}
];
var xy_chart = d3_xy_chart()
.wIDth(960)
.height(500)
.xlabel("X Axis")
.ylabel("Y Axis");
var svg = d3.SELEct("body").append("svg")
.datum(data)
.call(xy_chart);
function d3_xy_chart() {
var wIDth = 640,height = 480,xlabel = "X Axis Label",ylabel = "Y Axis Label";
function chart(SELEction) {
SELEction.each(function(datasets) {
//
// Create the plot.
//
var margin = {
top: 20,right: 80,bottom: 30,left: 50
},innerwIDth = wIDth - margin.left - margin.right,innerheight = height - margin.top - margin.bottom;
var x_scale = d3.scale.linear()
.range([0,innerwIDth])
.domain([d3.min(datasets,function(d) {
return d3.min(d.X);
}),d3.max(datasets,function(d) {
return d3.max(d.X);
})
]);
var y_scale = d3.scale.linear()
.range([innerheight,0])
.domain([d3.min(datasets,function(d) {
return d3.min(d.y);
}),function(d) {
return d3.max(d.y);
})
]);
var color_scale = d3.scale.category10()
.domain(d3.range(datasets.length));
var x_axis = d3.svg.axis()
.scale(x_scalE)
.orIEnt("bottom");
var y_axis = d3.svg.axis()
.scale(y_scalE)
.orIEnt("left");
var x_grID = d3.svg.axis()
.scale(x_scalE)
.orIEnt("bottom")
.tickSize(-innerheight)
.tickFormat("");
var y_grID = d3.svg.axis()
.scale(y_scalE)
.orIEnt("left")
.tickSize(-innerwIDth)
.tickFormat("");
var draw_line = d3.svg.line()
.interpolate("basis")
.x(function(d) {
return x_scale(d[0]);
})
.y(function(d) {
return y_scale(d[1]);
});
var svg = d3.SELEct(this)
.attr("wIDth",wIDth)
.attr("height",height)
.append("g")
.attr("transform","translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("class","x grID")
.attr("transform","translate(0," + innerheight + ")")
.call(x_grID);
svg.append("g")
.attr("class","y grID")
.call(y_grID);
svg.append("g")
.attr("class","x axis")
.attr("transform"," + innerheight + ")")
.call(x_axis)
.append("text")
.attr("dy","-.71em")
.attr("x",innerwIDth)
.style("text-anchor","end")
.text(xlabel);
svg.append("g")
.attr("class","y axis")
.call(y_axis)
.append("text")
.attr("transform","rotate(-90)")
.attr("y",6)
.attr("dy","0.71em")
.style("text-anchor","end")
.text(ylabel);
var data_lines = svg.SELEctAll(".d3_xy_chart_line")
.data(datasets.map(function(d) {
return d3.zip(d.x,d.y);
}))
.enter().append("g")
.attr("class","d3_xy_chart_line");
data_lines.append("path")
.attr("class","line")
.attr("d",function(d) {
return draw_line(d);
})
.attr("stroke",function(_,i) {
return color_scale(i);
});
data_lines.append("text")
.datum(function(d,i) {
return {
name: datasets[i].label,final: d[d.length - 1]
};
})
.attr("transform",function(d) {
return ("translate(" + x_scale(d.final[0]) + "," +
y_scale(d.final[1]) + ")");
})
.attr("x",3)
.attr("dy",".35em")
.attr("fill",i) {
return color_scale(i);
})
.text(function(d) {
return d.name;
});
});
}
chart.wIDth = function(value) {
if (!arguments.length) return wIDth;
wIDth = value;
return chart;
};
chart.height = function(value) {
if (!arguments.length) return height;
height = value;
return chart;
};
chart.xlabel = function(value) {
if (!arguments.length) return xlabel;
xlabel = value;
return chart;
};
chart.ylabel = function(value) {
if (!arguments.length) return ylabel;
ylabel = value;
return chart;
};
return chart;
}
body {
Font: 10px sans-serif;
}
.axis path,.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.grID path,.grID line {
fill: none;
stroke: rgba(0,0.25);
shape-rendering: crispEdges;
}
.x.axis path {
display: none;
}
.line {
fill: none;
stroke-wIDth: 2.5px;
}
@H_944_0@解决方法
使用 tickValues
和余数运算符来检查整数:
.tickFormat(d => d%1 ? d : null);
这是更改后的代码:
var data = [{
label: "Data Set 1",x: [0,1,2,3,4],y: [0,4]
},{
label: "Data Set 2",4,9,16]
}
];
var xy_chart = d3_xy_chart()
.width(960)
.height(500)
.xlabel("X Axis")
.ylabel("Y Axis");
var svg = d3.SELEct("body").append("svg")
.datum(data)
.call(xy_chart);
function d3_xy_chart() {
var width = 640,height = 480,xlabel = "X Axis Label",ylabel = "Y Axis Label";
function chart(SELEction) {
SELEction.each(function(datasets) {
//
// Create the plot.
//
var margin = {
top: 20,right: 80,bottom: 30,left: 50
},innerwidth = width - margin.left - margin.right,innerheight = height - margin.top - margin.bottom;
var x_scale = d3.scale.linear()
.range([0,innerwidth])
.domain([d3.min(datasets,function(d) {
return d3.min(d.X);
}),d3.max(datasets,function(d) {
return d3.max(d.X);
})
]);
var y_scale = d3.scale.linear()
.range([innerheight,0])
.domain([d3.min(datasets,function(d) {
return d3.min(d.y);
}),function(d) {
return d3.max(d.y);
})
]);
var color_scale = d3.scale.category10()
.domain(d3.range(datasets.length));
var x_axis = d3.svg.axis()
.scale(x_scalE)
.orient("bottom")
.tickFormat(d => d % 1 ? d : null);
var y_axis = d3.svg.axis()
.scale(y_scalE)
.orient("left");
var x_grid = d3.svg.axis()
.scale(x_scalE)
.orient("bottom")
.tickSize(-innerheight)
.tickFormat("");
var y_grid = d3.svg.axis()
.scale(y_scalE)
.orient("left")
.tickSize(-innerwidth)
.tickFormat("");
var draw_line = d3.svg.line()
.interpolate("basis")
.x(function(d) {
return x_scale(d[0]);
})
.y(function(d) {
return y_scale(d[1]);
});
var svg = d3.SELEct(this)
.attr("width",width)
.attr("height",height)
.append("g")
.attr("transform","translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("class","x grid")
.attr("transform","translate(0," + innerheight + ")")
.call(x_grid);
svg.append("g")
.attr("class","y grid")
.call(y_grid);
svg.append("g")
.attr("class","x axis")
.attr("transform"," + innerheight + ")")
.call(x_axis)
.append("text")
.attr("dy","-.71em")
.attr("x",innerwidth)
.style("text-anchor","end")
.text(xlabel);
svg.append("g")
.attr("class","y axis")
.call(y_axis)
.append("text")
.attr("transform","rotate(-90)")
.attr("y",6)
.attr("dy","0.71em")
.style("text-anchor","end")
.text(ylabel);
var data_lines = svg.SELEctAll(".d3_xy_chart_line")
.data(datasets.map(function(d) {
return d3.zip(d.x,d.y);
}))
.enter().append("g")
.attr("class","d3_xy_chart_line");
data_lines.append("path")
.attr("class","line")
.attr("d",function(d) {
return draw_line(d);
})
.attr("stroke",function(_,i) {
return color_scale(i);
});
data_lines.append("text")
.datum(function(d,i) {
return {
name: datasets[i].label,final: d[d.length - 1]
};
})
.attr("transform",function(d) {
return ("translate(" + x_scale(d.final[0]) + "," +
y_scale(d.final[1]) + ")");
})
.attr("x",3)
.attr("dy",".35em")
.attr("fill",i) {
return color_scale(i);
})
.text(function(d) {
return d.name;
});
});
}
chart.width = function(value) {
if (!arguments.length) return width;
width = value;
return chart;
};
chart.height = function(value) {
if (!arguments.length) return height;
height = value;
return chart;
};
chart.xlabel = function(value) {
if (!arguments.length) return xlabel;
xlabel = value;
return chart;
};
chart.ylabel = function(value) {
if (!arguments.length) return ylabel;
ylabel = value;
return chart;
};
return chart;
}
body {
font: 10px sans-serif;
}
.axis path,.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.grid path,.grid line {
fill: none;
stroke: rgba(0,0.25);
shape-rendering: crispEdges;
}
.x.axis path {
display: none;
}
.line {
fill: none;
stroke-width: 2.5px;
}
<script src="https://cdnjs.cloudFlare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>
以上是大佬教程为你收集整理的需要隐藏或删除 d3 图表中的替代 x 轴值全部内容,希望文章能够帮你解决需要隐藏或删除 d3 图表中的替代 x 轴值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。