2014-09-04 74 views
2

我正在尝试在维基百科上启用维加图形/地图,并寻找一种方法来绘制用不同颜色突出显示的不同国家的地图。因此,对于http://graphtest.wmflabs.org/wiki/Graph:Map的地图,我想要另一个表格,例如US =红色,FR =绿色,HE =蓝色等,这将突出显示给定国家的颜色。图的定义使用数字的国家ID,所以实际上我会有一个表“10”:“红色”等。我似乎无法弄清楚,是如何将国家数据与vega json中的高亮组合。维加地图突出显示

回答

1

你的问题包括2个问题。

1.标识:

如你所指出的,the JSON you use,使用http://jsoneditoronline.org检查时,似乎使用号码ID,因此您目前无法识别哪个形状是US,FR,HE。更好使用this versionid={country_name_in_english}。我目前没有任何与iso code手中的json,但英语或者ISO对于您的项目都是必需的。我今天旅行。最好和最公平的容易的是获得一个兼具id={country_name_in_english}, iso={iso_code}属性的JSON。这即将推出。

2.维加选择:

我'还不熟悉维加,所以我会处理这是关于如何创建一个纯粹的D3js问题,然后选择合适的形状,并根据相关的颜色他们数据...

//Create your D3js shapes with the right attributes 
var countries = d3.selectAll(".countries") 
    ... // more d3js code creating the countries' shapes here 
    .attr("id", function(d){ return d.id }) // <= important ! 
    ... 

// Custom data 
var coloring = [ [ "US", "red"], ["FR", "green"], ["HE", "blue"] ]; 

// Color the given shapes 
for (i=0; i < color.length; i++) { 
    var focus = d3.selectAll("#"+coloring[i][0]) 
       .style("fill", coloring[i][1]); 
} 

注:这纯粹维加的解决办法是确保更优雅。

+0

@yurik:很高兴终于见到你,我在维基媒体WikiAtlas IEG上工作,它将提供你很好的topojsons和d3js代码。请在twitter上关注[wikiatlas](http://twitter.com/wikiatlas)并发送推文。 :) – Hugolpz 2014-09-05 08:15:13

+0

嗨@hugopolz!不幸的是,我不能在这里使用非Vega方法,因为用户将无法访问JavaScript(因此首先使用Vega的原因)。我意识到第一个问题,但我认为我可以用我已经使用Lua构建的重新编码模块来解决这个问题,所以在现阶段解决这个问题并不重要。在阅读了Vega之后,我想我需要在使用它来绘制图形之前进行某种数据转换,TBD。很想见面,我在纽约,但反弹很多。 – Yurik 2014-09-05 19:21:13

+0

好吧,很酷,学习你看到维加的可能性(我还没有清楚地看到)。我们需要能够提供具体的[特定WP样式](https://rugger-demast.codio.io/front/_location_map-en-SO.html)和新的互动行为。除了将动态viz嵌入到mediawiki(已经很关键!)之外,我对Vega的可能性一无所知。我在巴黎,每年去维基媒体事件两次:Wikimania,Hackathon。对于问题1,这只是从shapefile到topojson的自定义导出。无需编写任何模块。 – Hugolpz 2014-09-06 10:16:21