2013-12-17 53 views

回答

1

我设法它使用两个文本标签的事情。顶部标签被包裹在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"); 
+0

谢谢@cuckovic :) – Preethi

2

这不是做一个简单的事情。你将不得不

  • 添加文本。
  • 确定使用.getBBox()或类似的东西它的实际尺寸。
  • 删除文本。
  • 拆分取决于其实际宽度和所述条的宽度的文本转换成单独的段(例如tspan多个)。
  • 添加具有相应样式的段。

也就是说,您必须手动将文本分解为您想要不同样式的部分,然后分配这些样式。

+0

你能举个例子吗? – Preethi

+0

对于你所要求的确实没有任何例子,但[这里](http://enja.org/code/tuts/d3/bar/)是一个教程,它使用了边界框和[here](http: //stackoverflow.com/questions/13922862/getting-text-area-using-getbbox)是关于这个问题的一个问题。 –