Javascript 如何从csv中使d3.js中的2种颜色表示肯定词云和否定词云

Javascript 如何从csv中使d3.js中的2种颜色表示肯定词云和否定词云,javascript,html,css,d3.js,Javascript,Html,Css,D3.js,我有一个csv文件 `[Name,Frequency,Sentiment hijacked,664,negative pay,267,negative gang,191,negative knives,120,negative planes,64,negative shut,60,negative police,60,negative russia,58,negative term,57,negative fulfil,55,negative agendas,55,negative malici

我有一个csv文件

`[Name,Frequency,Sentiment hijacked,664,negative pay,267,negative gang,191,negative knives,120,negative planes,64,negative shut,60,negative police,60,negative russia,58,negative term,57,negative fulfil,55,negative agendas,55,negative malicious,55,negative unaccounted,55,negative misused,55,negative one,51,negative crashlands,48,negative two,43,positive befo,41,negative airpo,36,negative dam,36,negative shootout,36,positive following,35,positive ality,34,negative india,34,negative need,34,negative news,29,negative used,26,negative series,25,negative robbers,24,negative got,21,negative twitter,18,negative back,16,negative people,16,negative car,16,negative terrorists,16,negative purpose,16,negative think,15,negative]`
由3个数据名称、频率和情绪组成

我想在rapid d3.js中创建一个颜色为蓝色和红色的单词云。这种颜色取决于情绪是“积极”还是“消极”

我现在用的单词cloud是黑色的。我怎样才能把它换成红色和蓝色

这是我的代码:


词云~
可变宽度=1050,
高度=800;
var leaderScale=d3.scale.linear().范围([30,90]);
var fill=d3.scale.category20();
d3.csv(“file.csv”),函数(数据){
风险值=数据
.map(函数(d){返回{文本:d.名称,大小:+d.频率,情绪:d.情绪};})
.sort(函数(a,b){返回d3.降序(a.size,b.size);})
.切片(0,100);
leaderScale.domain([
d3.min(引线,函数(d){返回d.size;}),
d3.max(引线,函数(d){返回d.size;})
]);
d3.layout.cloud().size([宽度,高度])
.words(loadWords())
.文字(领导人)
.填充(0)
//.rotate(函数(){return~~(Math.random()*2)*90;})
.font(“影响”)
.fontSize(函数(d){返回引线刻度(d.size);})
.on(“结束”,drawCloud)
.start();
函数loadWords(leaders){
变量word1={
文本:“名称”,
大小:'频率',
情绪:"情绪",,
//如果(情绪:“积极”)
颜色:“#FF00FF”
};
变量word2={
文本:“名称”,
大小:'频率',
情绪:"情绪",,
//如果(情绪:“负面”)
颜色:“#3498DB”
};
返回[word1,word2]
}
函数fillColor(d,i){
返回d.color;
}
函数drawCloud(字){
控制台日志(文字);
d3.选择(“正文”).附加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度)
.附加(“g”)
.attr(“变换”、“平移”(+(宽度/2)+)、“+(高度/2)+”))
.selectAll(“文本”)
.数据(字)
.enter().append(“文本”)
.样式(“字体大小”,功能(d){
返回d.size+“px”;
})
.style(“填充”,函数(d){
控制台日志(d);
返回值(d.情绪==“积极”?“红色”:“黑色”);})
.style(“字体系列”、“影响”)
.attr(“文本锚定”、“中间”)
.attr(“转换”,函数(d){
返回“translate(“+[d.x,d.y]+”)rotate(“+d.rotate+”)”;
})
.文本(功能(d){
返回d.text;
});
}
});

函数fillcolor正在将颜色设置为文本,但我没有看到您将d.color设置为颜色的任何地方

function fillColor(d,i){
            return d.color;
        }
您可以在制作文本时执行以下操作:

 .style("fill", function(d) { 
                 console.log(d); 
                 return (d.sentiment == "positive" ? "red" : "black"); })
小提琴中的工作代码:

感谢您的回复。如何设置颜色?正如我在小提琴上看到的那样。你把它放在css部分。我是否需要在代码体中添加css部分,或者用该代码创建css文件?我尝试创建一个新的css文件,并在中添加一个链接,如下所示:但是我的word cloud中没有任何更改,而且所有的word都是黑色的。不,我没有在css部分添加任何内容。我已经删除了这把小提琴中的CSS。你不需要在CSS中添加任何东西,你所需要做的就是添加样式填充,正如我在上面所说明的那样,在小提琴代码中也是如此。我按照你在我的问题中的指示将我的代码更改为,但我的单词仍然被涂成黑色。你是否也删除了这一行。样式(“填充”,填充颜色)我删除了。样式(“填充”,填充颜色)但还是得到了同样的结果。是因为我把颜色变量放在loadWords()函数中吗?