2016-04-06 6 views
0

Я использую его, чтобы произвести тяжелое количество слов в моем приложении, и я получить данные из файла JSON, как показано ниже:разрыв строки в d3 Облако тегов

var a = []; 

    for (var i=0; i < a.length; i++){ 
      a.push(a[i].word); 
     } 

И это дает нам массив.

a = ["gsad","sagsa","gsag","sagas","gsag","gsagas","yhff","gag"]; 

Я отобразить его на экране правильно, но так как строка слишком долго вылезли от границы, и я хотел бы дать ему ссылку перерыв вместо изменить размер SVG, как я могу сделать это?

UPDATE:

ниже код, как я вставить свои коды:

вар PositiveArr = [ "gsad", "sagsa", "gsag", "Саги", "gsag", "gsagas », "yhff", "затычки"]; // Рассмотрим NegativeArr, NeutralArr имеют аналогичные содержимое

var fill = d3.scale.category20(); 
        d3.layout.cloud().size([600, 300]) 
         .words([NegativeArr,NeutralArr,PositiveArr].map(function(d) { 
         return {text: d, size: 10 + Math.random() * 50}; 
         })) 
         .rotate(function() { return ~~(Math.random() * 2) * 90; }) 
         .font("Impact") 
         .fontSize(function(d) { return d.size; }) 
         .on("end", draw) 
         .start(); 


        function draw(words) { 
        d3.select("#pre-theme").append("svg") 
         .attr("width", 600) 
         .attr("height", 300) 
         .append("g") 
         .attr("transform", "translate(300,150)") 
         .selectAll("text") 
         .data(words) 
         .enter().append("text") 
         .style("font-size", function(d) { return d.size + "px"; }) 
         .style("font-family", "Impact, Arial") 
         .style("fill", function(d, i) { return fill(i); }) 
         .attr("text-anchor", "middle") 
         .attr("transform", function(d) { 
          return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; 
         }) 
         .text(function(d) { return d.text; }); 
        } 

РЕШЕНИЕ: Я нашел себе решение, я просто объединить все свои массивы в один с помощью

var allResult = PersonsArr.concat(PlacesArr,PatternsArr,ProductsArr,CompaniesArr); 

и вставить в. карта как

.words(entityResult.map(function(d) { 
         return {text: d, size: 10 + Math.random() * 50}; 
         })) 
+0

вам нужно использовать 'tspan' внутри текстового элемента для LineBreak или использовать' foreignobject'. Покажите свой полный код, который добавляет теги – murli2308

+0

, есть ли какой-либо пример или соответствующий документ об этом методе? Спасибо. – anson920520

+0

Оставьте свой полный код. где вы добавляете эти теги и как? – murli2308

ответ

1

рЕШЕНИЕ: Я нашел себе решение, я просто объединить все свои массивы в один с помощью

var allResult = PersonsArr.concat(PlacesArr,PatternsArr,ProductsArr,CompaniesArr); 

и вставьте в .map как

.words(entityResult.map(function(d) { 
         return {text: d, size: 10 + Math.random() * 50}; 
         }))