使用D3.js

时间:2016-06-12 15:52:27

标签: javascript d3.js

我是StackOverflow的新手,我刚刚开始使用D3。 我需要在地图上显示值。我看到this question与我应该做的非常相似。

我想要的是根据列Date中的值为CSV并根据用户选择的年份(单选按钮)为国家/地区着色。 我怎么能这样做?

我创建了一个灰色色标并将它们包含在一个数组中,然后我创建了一个方法chooseColor(value),它根据该年份所在国家/地区的值返回正确的颜色。 我认为做这件事并不是最有效的方法......

同样在我的CSV中,并非所有在欧盟的国家都有。例如,我没有关于俄罗斯的数据,因此我关闭了#34;一些国家/地区将if置于mouseover的活动中。 但我也会在地图上削减部分俄罗斯,以扩大已知国家。我怎么能做那件事?

我在bl.ocks.org上看了这些例子:Mike Bostock的 Choropleth Threshold Choropleth ,但我还不明白如何给国家上色...... (我想放置链接,但由于声誉不佳,我不能发布超过2个链接)

This is my code

我为我糟糕的英语道歉。谢谢大家,

码头

修改

我承认我对你的代码中的某些内容并不了解。

  1. 为什么我需要活动on mouseovermouseout?什么是hoverrhover?我认为它们是与this question相关的事件。但就我而言,我不需要它,不是吗?
  2. 使用array_valuesd是一样的,对吧?如果我使用darray_values,则不会更改,对吧?这是一个愚蠢的问题,但它使我感到困惑。
  3. 我以这种方式修改了makemap方法。我正确理解如何使用您的代码?

    function makemap(error,europe,dessease){     dess = dessease.slice();     counties = topojson.feature(europe,europe.objects.collection);

    vector = svg.selectAll("path")
        .data(counties.features)
        .enter()
        .append("path")
        .attr("class", "county")
        .attr("id", function(d) { 
            return "coun" + d.properties.indx;
        })
        .attr("d", path)
        .style("fill", function(array_values) {
            return color(array_values[d.country]);
        });
    
  4. 在这种情况下,当然存在关于d的错误。对不起,我不知道我错在哪里......

1 个答案:

答案 0 :(得分:1)

国家的颜色取决于价值。所以颜色是“价值”的函数。为此,您必须根据您的值定义一系列颜色:

var color = d3.scale.linear()
                      .domain([mn,mx])      // <--- min and MAX of your value
                      .range(["#ffffff","000000"]);

然后定义您所在国家/地区的颜色:

svg.selectAll(".county")
                  .style("fill", function(array_values) {
                        return color(array_values[d.country]);
                  });

必读:Jerome Cukier - d3: scales, and color