我是StackOverflow的新手,我刚刚开始使用D3。 我需要在地图上显示值。我看到this question与我应该做的非常相似。
我想要的是根据列Date
中的值为CSV并根据用户选择的年份(单选按钮)为国家/地区着色。
我怎么能这样做?
我创建了一个灰色色标并将它们包含在一个数组中,然后我创建了一个方法chooseColor(value)
,它根据该年份所在国家/地区的值返回正确的颜色。
我认为做这件事并不是最有效的方法......
同样在我的CSV中,并非所有在欧盟的国家都有。例如,我没有关于俄罗斯的数据,因此我关闭了#34;一些国家/地区将if
置于mouseover
的活动中。
但我也会在地图上削减部分俄罗斯,以扩大已知国家。我怎么能做那件事?
我在bl.ocks.org上看了这些例子:Mike Bostock的 Choropleth 和 Threshold Choropleth ,但我还不明白如何给国家上色...... (我想放置链接,但由于声誉不佳,我不能发布超过2个链接)
我为我糟糕的英语道歉。谢谢大家,
码头
修改
我承认我对你的代码中的某些内容并不了解。
on mouseover
和mouseout
?什么是hover
和rhover
?我认为它们是与this question相关的事件。但就我而言,我不需要它,不是吗?array_values
或d
是一样的,对吧?如果我使用d
或array_values
,则不会更改,对吧?这是一个愚蠢的问题,但它使我感到困惑。我以这种方式修改了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]);
});
在这种情况下,当然存在关于d
的错误。对不起,我不知道我错在哪里......
答案 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]);
});