У меня есть выпадающие элементы, и каждый выбранный выпадающий элемент имеет разные CSV-файлы для отображения облака слов (слово, частота). Вы можете найти код ниже. Когда я выбираю один элемент, появляется облако слов, но когда я выбираю следующий элемент, другое облако слов также отображается без очистки предыдущего. Я хочу показать только одно облако слов, которое является последним из выпадающих. Я пытался использовать .exit (). Remove (), но, похоже, он не работает, поскольку облако слов по-прежнему отображается непрерывно word-cloud-image . Я хотел бы заранее поблагодарить вас.
var margin = {top: 40, right: 20, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var allGroup = ["Jose", "Thomas"]
d3.select("#selectButton")
.selectAll('myOptions')
.data(allGroup)
.enter()
.append('option')
.text(function (d) { return d; }) // text showed in the menu
.attr("value", function (d) { return d; }) // corresponding value returned by the button
var fill = d3.scale.category20();
d3.csv("words.csv", function(d) {
return {
text: d.word,
size: +d.freq/6
}
},
function(data) {
d3.layout.cloud().size([width, height]).words(data)
//.rotate(function() { return ~~(Math.random() * 2) * 90; })
.rotate(0)
.font("Impact")
.fontSize(function(d) { return d.size; })
.on("end", draw)
.start();
function updateAilments(){
d3.csv("data1.csv", function(d) {
return {
text: d.ailment_name,
size: +d.frequency/2
}
},
function(data) {
d3.layout.cloud().size([width, height]).words(data)
//.rotate(function() { return ~~(Math.random() * 2) * 90; })
.rotate(0)
.font("Impact")
.fontSize(function(d) { return d.size; })
.text(function(d) { return d.text; })
.on("end", draw)
.start();
})
}
function draw(words) {
var svg = d3.select("#cloud").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width/2 + "," + height/2 + ")")
.selectAll("text")
.data(words)
var contentEnter = svg.enter().append("text");
contentEnter
.style("font-size", function(d) { return d.size + "px"; })
.style("font-family", "Impact")
.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; })
svg.exit().remove();
}
d3.select("#selectButton").on("change", function(d) {
// recover the option that has been chosen
var selectedOption = d3.select(this).property("value")
// run the updateChart function with this selected option
switch (selectedOption)
{
case "Thomas":
updateAilments(selectedOption)
break
default:
updateAilments(selectedOption)
}
})
});