D3:在1张图中绘制3个csv,每个图都有一个函数,但有2个csv;不起作用

D3: Drawing 3 csv in 1 graph with a function for each, but 2 don't work

本文关键字:csv 函数 有一个 但有 2个 不起作用 绘制 3个 D3 1张      更新时间:2023-09-26

我正在尝试用D3创建一个基本但可工作的交互式MCA(用于多个对应关系分析)。我的一个函数(Indiv函数)工作得很好,但另外两个函数虽然格式相同,但却不一样。

var margin = {right: 30, left: 30, top: 50, bottom: 50},
    width = 620 - margin.left - margin.right,
    height = 500+margin.top + margin.bottom;
var x = d3.scale.linear()
    .domain([-2,3])
    .range([0,width])
var y = d3.scale.linear()
    .domain([2,-2])
    .range([0,height]);
var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom")  
    .tickSize(1);
var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .tickSize(1);
var canvas = d3.select(".result-side1")
    .append("svg") 
    .attr("width", width+20) 
    .attr("height", height+20)
    .append('g')
    .attr('transform', 'translate(30,30)');
canvas.append("g")
    .attr("class", "x axis")
    .attr("transform", "translate(0," + (height-30) + ")")
    .call(xAxis);
canvas.append("g")
    .attr("class", "y axis")
    .call(yAxis);
canvas.append("text") 
    .attr("x", (width / 2)) 
    .attr("y", 40 - (margin.top)) 
    .attr("text-anchor", "middle") 
    .style("font-size", "22px") 
    .style("text-decoration", "underline") 
    .attr("fill","white")
    .text("Les Etats classés selon leur profil");

function affichInd(){
var individus = canvas.append("g");
d3.csv("donnees/USAindiv.csv", function(error, data)
{
 //Add data to the graph and call enter.
 var dataEnter = individus.selectAll("circle").data(data).enter();
 var dataEntertext = individus.selectAll("text").data(data).enter();
 dataEnter.append("circle")
    .attr("cx", function(d,i){return x(d.Dim1);})
    .attr("cy", function(d,i){return y(d.Dim2);})
    .attr("r", 2)
    .attr("fill","#3399FF");
dataEntertext.append("text")
    .attr("x", function(d,i){return x(d.Dim1);})
    .attr("y", function(d,i){return y(d.Dim2);})
    .attr("fill","#3399FF")
    .text(function(d,i){return d.State});
    })
 }
/* These last two don't work */
/*Variables*/   
function affichVar(){
var variables = canvas.append("g");
d3.csv("donnees/USAvaria.csv",
function(error, datavaria)
{
 //Add data to the graph and call enter.
 var datavariaEnter = variables.selectAll("circle").data(datavaria).enter();
 var datavariaEntertext = variables.selectAll("text").data(datavaria).enter();
 datavariaEnter.append("circle")
    .attr("cx", function(d,i){return x(d.Dim1);})
    .attr("cy", function(d,i){return y(d.Dim2);})
    .attr("r", 2)
    .attr("fill","#B9CC14");
datavariaEntertext.append("text")
    .attr("x", function(d,i){return x(d.Dim1);})
    .attr("y", function(d,i){return y(d.Dim2);})
    .attr("fill","#B9CC14")
    .text(function(d,i){return d.Variables});
})
}
/*Variables supplémentaires*/
function affichVarSupp(){
var variablessupp = canvas.append("g");
d3.csv("donnees/USAvasup.csv", function(error, datavasup)
{
 //Add data to the graph and call enter.
 var datavasupEnter = variablessupp.selectAll("circle").data(datavasup).enter();
 var datavasupEntertext = variablessupp.selectAll("text").data(datavasup).enter();
 datavasupEnter.append("circle")
    .attr("cx", function(d,i){return x(d["Dim1"]);})
    .attr("cy", function(d,i){return y(d["Dim2"]);})
    .attr("r", 2)
    .attr("fill","#FF584C");
datavasupEntertext.append("text")
    .attr("x", function(d,i){return x(d["Dim1"]);})
    .attr("y", function(d,i){return y(d["Dim2"]);})
    .attr("fill","#FF584C")
    .text(function(d,i){return d.Qualisup});
})
}

这有什么理由不起作用吗?

我试过摆弄一些代码,这就是为什么它们并不完全相似,但我想我错过了一些概念性的东西。。。以下是我得到的:http://www.victoralexandre.fr/d3_acm_3.html

谢谢你的帮助!Vic。

我的朋友们的答案在文件中爆炸了:我只需要把d3.csv改成d3.tsv,NaN就变成了数字。

Hurray。(尽管我不太清楚为什么会发生这种情况)