水平条形图上的文本 - d3
Text on horizontal bar chart - d3
我有一个水平条形图,上面显示字段名称。如果名称(文本)超过栏,文本必须是黑色的,如下所示。我该怎么做?
我已经设法使用两个文本标签来做到这一点。顶部标签用 svg 包裹,因此可以夹住其长度。这是工作示例 - http://jsfiddle.net/cuckovic/C6SSj/
bar.append("text")
.attr("class", "below")
.attr("x", 12)
.attr("dy", "1.2em")
.attr("text-anchor", "left")
.text(function(d) { return d.sharedLabel; })
.style("fill", "#000000");
bar.append("rect")
.attr("class", "malebar")
.attr("height", barWidth-gap)
.attr("x", 10);
bar.append("svg")
.attr({
height: barWidth-gap
})
.append("text")
.attr("class", "up")
.attr("x", 12)
.attr("dy", "1.2em")
.attr("text-anchor", "left")
.text(function(d) { return d.sharedLabel; })
.style("fill", "#ffffff");
这不是
一件小事。你将不得不
- 添加文本。
- 使用
.getBBox()
或类似的东西确定其实际尺寸。 - 删除文本。
- 将文本拆分为单独的句段(例如
tspan
s) 取决于其实际宽度和条形宽度。 - 添加具有相应样式的这些段。
也就是说,您必须手动将文本分解为需要不同样式的部分,然后指定这些样式。
相关文章:
- 使用D3.js计算带有字母间距的文本长度
- 仅当变量有值时才显示D3文本标签
- 使用D3将Ticks值更改为文本
- 向d3圆添加文本
- 使用D3.js和GeoJson在地图上显示States上的一些文本
- 在d3.js中显示圆弧末端的文本
- 如何在d3中更新带有附带文本的条形图
- 如何从该文本的 onclick 方法中更改 d3.js 文本输入
- 在 D3 中使用 Tipsy 缩小悬停文本
- 将 d3 演示中的圆圈和文本替换为包含自定义 HTML 和 ko 绑定的 foreignObject
- 水平条形图上的文本 - d3
- D3围绕饼图旋转文本
- 如何在D3中获得可缩放Icicle布局中文本标签的旋转
- 在d3.js中添加文本标签以强制定向图链接
- D3文本作为传单标签
- 为什么不是'当使用新数据集时,条形图上出现的d3文本
- d3.文本按顺序运行
- D3文本到处都是,不在正确的地方
- d3文本没有't随节点移动
- d3 - 文本在地图上的位置