D3-文字云,中文文本实现

我正在尝试可视化已转录为中文文本的语音。我尝试指向整个文本文件以及一个简单的硬编码文本字符串,但是无论如何,我都不会出错。因此,我不确定如何进一步解决问题。

var text_string = "CHInesE TEXT HERE";
//word cloud start
    //d3.text('jin-bo-speech.txt',function(text) {

      //var text_string = text;

      drawWordCloud(text_string);

      function drawWordCloud(text_string){

        var word_count = {};

        var words = text_string.split(/[\-\(\)\*":;\[\]|{},.!?]+/);
          if (words.length == 1){
            word_count[words[0]] = 1;
          } else {
            words.forEach(function(word){
              var word = word.toLowerCase();
              if (word != "" && word.length>1){
                if (word_count[word]){
                  word_count[word]++;
                } else {
                  word_count[word] = 1;
                }
              }
            })
          }

        var svg_location = "#chart";
        var width = 1200;
        var height = 600;

        var svg = d3.select('body')
            .append('svg')
            .attr('width',width)
            .attr('height',height);

        var fill = d3.scale.linear()
                .range(["#15198e","#adc8f0",'gray']);

        var word_entries = d3.entries(word_count);

        console.log(word_count)

        var xScale = d3.scale.linear()
           .domain([0,d3.max(word_entries,function(d) {
              return d.value;
            })
           ])
           .range([10,100]);

        d3.layout.cloud().size([width,height])
          .timeInterval(20)
          .words(word_entries)
          .fontSize(function(d) { return xScale(+d.value); })
          .text(function(d) { return d.key; })
          .rotate(0)
          .font("Teko")
          .on("end",draw)
          .start();

        function draw(words) {
          d3.select("svg")
            .append("g")
              .attr("transform","translate(" + [width >> 1,height >> 1] + ")")
            .selectAll("text")
              .data(words)
            .enter().append("text")
              .style("font-size",function(d) { return xScale(d.value) + "px"; })
              .style("font-family","Teko")
              .style("fill",'gray')
              .attr("text-anchor","middle")
              .attr("transform",function(d) {
                return "translate(" + [d.x,d.y] + ")rotate(" + d.rotate + ")";
              })
              .text(function(d) { return d.key; });

d3.layout.cloud().stop();
<div id="chart"></div>
   <script src="https://gist.githubusercontent.com/ericcoopey/6382449/raw/c61e6febb945ca6833089c1d39a5a40bb14d2734/d3.layout.cloud.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

我要注意的是,当我在脚本中对文本进行硬编码时,控制台日志会正确显示文本(请参见变量text_string)。但是,尽管定义了text_string,但单词cloud并没有画出来。

问题

拥有杰森·戴维斯(Jason Davies)词云经验的人可以分享他们以其他语言可视化文本的想法吗?

注意:为了准确起见,我尝试在代码段中包含实际的中文文本,但这阻碍了我的整个帖子-我想SE上只有英文规则。

fengruoyang 回答:D3-文字云,中文文本实现

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3161864.html

大家都在问