我正在D3中绘制一个简单的水平条形图。 我正在将酒吧打成带有长长的白色刻度的小矩形。 但是我的刻度线正在切入一些文字。 我怀疑我以某种方式错误地绘制元素。 你觉得呢? 如何使网格线只切片而不是文本?D3白色刻度线(网格线)正在绘制文字,如何更正?
你可以看到它的外观俗气,整个事情是在这里: http://bl.ocks.org/greencracker/4378b817d4d5393c4e37
这里的关键部分,我想: ...
var bar = svg.selectAll("g.bar") // create the bars
.data(data)
.enter().append("g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(0," + y(d.name) + ")"; });
bar.append("rect") // draw the bars
.attr("width", function(d) { return x(d.value); })
.attr("height", y.rangeBand())
.style("opacity", 0.5);
svg.append("g") // draw my x axis, which includes the white tickmarks
.attr("class", "x axis")
.call(xAxis);
bar.append("text") // then attach text to each bar
.attr("class", "value")
.attr("x", function(d) { return x(d.value); })
.attr("y", y.rangeBand()/2)
.attr("dy", ".35em")
.attr("text-anchor", function (d) {
if (d.name === "Business, Management, Marketing") {return "end"}
else {return "start"} ;}) // correct for "business" being very long
.attr("dx", function (d) {
if (d.name === "Business, Management, Marketing") {return -3}
else {return 3} ;}) // correct for "business" being very long
.text(function(d) { return (d.name); });
(是的,我问了一个类似的问题之前,但这个有点不同,我无法弄清楚。Transition on axis -- losing grid lines (ticksize), how to transition in correct order?)
事情是你的代码没有切分文本 - 它看起来像是因为文本在上面。我不确定你想要解决的问题。 – aug