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