创建一个标签“<text>”部分的单词被剪切。 c3.js - d3.js

Posted

技术标签:

【中文标题】创建一个标签“<text>”部分的单词被剪切。 c3.js - d3.js【英文标题】:create a tag "<text>" part of the word is cut. c3.js - d3.js 【发布时间】:2016-07-07 12:09:30 【问题描述】:

我正在添加一个&lt;text&gt;,并想在此标签中引入 YABADABADOOOO 这个词,然后我在 x 和 y 中分配一个位置以将其放在我想要的位置。在这张图片中,我展示了我想要放置的位置:

由于某些奇怪的原因,它的文本(“YABADABADOOOO”)没有完全显示。我能做什么?

这是我的代码:

chartData=[
 ['data1',60,10,4,20],
 ['data2',30,30,5,20],
 ['data3',30,30,4,20]
]

var chart = c3.generate(
bindto: '#chart',
size: 
    height: 500,
,
data: 
    columns: chartData,
    colors:
      data1:'#00af50',
      data2:'#F7931E',
      data3: '#FF0000'
    ,
    names:
      data1:'namedata1',
      data2:'namedata2',
      data3:'namedata3'

    ,

    type:'bar',

    labels: 
      //format: function (v, id, i, j)  return "Default Format"; ,
      format: 

       data1: function (v, id, i, j)  
         return "text 30 characters->.........."; 
       ,
        data2: function (v, id, i, j)  

         return "Format for data2"; 
       ,
        data3: function (v, id, i, j)  

         return "other text"; 
       ,
      
    
,


tooltip: 
    show: false
,    
legend: 
    show: false
,
axis: 
    rotated: true,
    x: 
        type: 'category',
        categories: ['001', '002','003','004'],
         tick: 

         format: function (d)  
          return "" ; 
        
            
    
);

var arrayOfPics = [
"http://lorempixel.com/40/40/abstract",
"http://lorempixel.com/40/40/animal",
"http://lorempixel.com/40/40/business",
"http://lorempixel.com/40/40/cats",
"http://lorempixel.com/40/40/sports",
"http://lorempixel.com/40/40/food"
];


d3.selectAll('.c3-axis-x .tick')
.each(function(d,i)
// clear tick contents and replace with image
var self = d3.select(this);
//  self.selectAll("*").remove();
self.append('image')
  .attr("xlink:href", arrayOfPics[i])
  .attr("x", -40)
  .attr("y", -20)
  .attr("width", 25)
  .attr("height", 25);
 );

 d3.selectAll('.c3-axis-x .tick')
.each(function(d,i)
// clear tick contents and replace with image
var self = d3.select(this);
//  self.selectAll("*").remove();
  self.append('text')
   .attr("x", 50)
  .attr("y", -110)
   .style("text-anchor", "middle")
.text("YABADABADOOOOO");

);

https://jsfiddle.net/zdndpd3x/

【问题讨论】:

【参考方案1】:

c3.js 正在将剪辑路径应用于轴。我不太了解c3 的内部结构,所以我不确定他们为什么要这样做。 但是你可以删除它:

d3.select('.c3-axis-x').attr("clip-path", "");

更新fiddle。

【讨论】:

@yavg,不要试图粗鲁,但如果您需要在基于 SVG 的图表和图形中开发更高级的功能,则需要研究所使用的技术。例如,SVG clippaths 上有 lots 的 documentation。 @Mark 在 Meta 上有很多关于这些问题的讨论 meta.***.com/questions/319937/… 我个人建议不要因为缺乏研究等原因回答它们。 @Ian,感谢您的提醒。在我回答了前 3 个问题后,我就抓住了“二重奏”,然后放弃了。

以上是关于创建一个标签“<text>”部分的单词被剪切。 c3.js - d3.js的主要内容,如果未能解决你的问题,请参考以下文章

使用 XSLT 创建带有嵌套粗体/斜体标签的 XSL-FO

用python提取xml文件<text></text>标签内的文本内容

微信小程序text标签

weex h5开发区别-实践初级篇

混合开发

wxml