Javascript D3.js csv互动过滤器

Javascript D3.js csv互动过滤器,javascript,csv,d3.js,Javascript,Csv,D3.js,我是d3.js&html新手,我还没有找到问题的答案 我有一个数组,我想画在时间图上。 正如你可能看到的,你无法识别哪个圈子属于哪个国家。我想整合一些mousevents等来区分圆圈 但是我不知道如何从.csv文件中过滤原产国。我该怎么做 我想从“原产地”那里得到参赛作品,这样我就可以把这些圈分到不同的国家。如果我想赋予不透明度/颜色属性,这是正确的方法吗?) body, html{ 保证金:0; 填充:0; 字体系列:“Arial”,无衬线; 字号:0.95em; 文本对齐:居中; }

我是d3.js&html新手,我还没有找到问题的答案

我有一个数组,我想画在时间图上。

正如你可能看到的,你无法识别哪个圈子属于哪个国家。我想整合一些mousevents等来区分圆圈

  • 但是我不知道如何从.csv文件中过滤原产国。我该怎么做
  • 我想从“原产地”那里得到参赛作品,这样我就可以把这些圈分到不同的国家。如果我想赋予不透明度/颜色属性,这是正确的方法吗?)
  • body,
    html{
    保证金:0;
    填充:0;
    字体系列:“Arial”,无衬线;
    字号:0.95em;
    文本对齐:居中;
    }
    #图表{
    背景色:#F5F2EB;
    边框:1px实心#CCC;
    }
    .酒吧{
    填充:紫色;
    形状渲染:边缘清晰;
    }
    .酒吧标签{
    填充:黑色;
    文本锚定:中间;
    字号:18px;
    }
    .轴线路径,
    .轴线{
    填充:无;
    行程:#000;
    形状渲染:边缘清晰;
    }
    .网格线路径,
    .网格线{
    填充:无;
    冲程:#ccc;
    形状渲染:边缘清晰;
    
    }
    要过滤数据,使您只需要特定来源的数据,您可以使用
    过滤功能。此函数接受一个参数,这是另一个函数,它将为所有要包含的数据点返回true,为所有要排除的数据点返回false。例如,如果您想要以德国为原点的圆,可以执行以下操作:

    var germany = svg.selectAll(".point")
                     .filter(function(d) {return d.Origin == "Germany"});
    
    至于设置颜色和不透明度,看起来您在任何地方都没有这样做(即使在样式表中,您也没有“圆形”元素或“.point”类的任何样式)。由于您只想更改圆子集的颜色和不透明度,因此最好使用d3的
    style()
    函数,该函数允许您更改数据点的样式。例如,如果要使所有以德国为原点表示数据点的圆都为红色且完全不透明,可以执行以下操作:

    var germany = svg.selectAll(".point")
                     .filter(function(d) {return d.Origin == "Germany"});
    
    germany.style(“填充”、“红色”)。style(“不透明”,1)

    或者,如果要根据圆的原点为所有圆上色,可以跳过过滤步骤,使用颜色比例一次性为所有圆上色:

    //creates a scale to assign colors
    var colorScale = d3.scale.category10(); 
    
    //Then apply it to all points by assigning
    // fill based on a callback function
    svg.selectAll(".point")
       .style("fill", function(d){return colorScale(d.Origin)});
    

    你能澄清一下你想要的最终结果是什么样的吗?是否一次只显示一个来源国的国家?或者,您希望显示来自许多国家的数据,但以该国的不透明度和颜色为基础?另外,您询问是否正确地对颜色和不透明性进行了归因,但您似乎没有任何代码尝试这样做-您是否忘记了部分代码?(可能是样式表?)我想通过origit进行过滤,但所有圈子都应该是透明的,但我没有做到,因为我很难获得国家(阿富汗、叙利亚等)的条目。所以基本上是第二个。正如我最后提到的,我无法到那里尝试不透明。我只是需要帮助先过滤国家。但是谢谢你,我编辑了我的问题以澄清谢谢你,这对我很有帮助。我将在另一个问题中单独发布过滤问题,以便更详细地解释