2016-03-11 79 views
1

我发现了一个包含荷兰所有城市的GeoJSON file。我现在试图用Plotly来绘制这张地图,但我似乎无法弄清楚如何做到这一点。我知道可以在特定国家设置范围,但Plotly的默认地图似乎并不包含每个国家/地区的单个城市。Plotly:基于GeoJSON文件创建地图

我正在基于this JSFiddle我会在其他地方Stackoverflow。我知道这些数据与荷兰没有关系,但这一点无关紧要:我想要的只是一张看起来有点像this的地图(但我喜欢在Plotly中完成,因为Plotly在Python中支持)。

任何帮助,非常感谢!

Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_world_gdp_with_codes.csv', function(err, rows){ 
     function unpack(rows, key) { 
      return rows.map(function(row) { return row[key]; }); 
     } 

var data = [{ 
       type: 'choropleth', 
       locations: unpack(rows, 'CODE'), 
       z: unpack(rows, 'GDP (BILLIONS)'), 
       text: unpack(rows, 'COUNTRY'), 
       colorscale: [[0,'rgb(5, 10, 172)'],[0.35,'rgb(40, 60, 190)'],[0.5,'rgb(70, 100, 245)'], [0.6,'rgb(90, 120, 245)'],[0.7,'rgb(106, 137, 247)'],[1,'rgb(220, 220, 220)']], 
       autocolorscale: false, 
       reversescale: true, 
       marker: { 
       line: { 
        color: 'rgb(180,180,180)', 
        width: 0.5 
       } 
       }, 
       tick0: 0, 
       zmin: 0, 
       dtick: 1000, 
       colorbar: { 
       autotic: false, 
       tickprefix: '$', 
       title: 'GDP<br>Billions US$' 
       } 
      }]; 

console.log(data.locations); 
    var layout = { 
      title: '2014 Global GDP<br>Source: <a href="https://www.cia.gov/library/publications/the-world-factbook/fields/2195.html"> CIA World Factbook</a>', 
      geo:{ 
      showframe: false, 
      showcoastlines: false, 
      projection:{ 
       type: 'mercator' 
      } 
      } 
     }; 
     Plotly.plot(myDiv, data, layout, {showLink: false}); 
    }); 

回答

2

在图中,您可以使用作用域来限制显示的底图。不幸的是,开箱即用,只有几个示波器在这里列出:https://plot.ly/python/reference/#layout-geo-scope

要限制显示的基本映射,有一个解决方法,使用lonaxis和lataxis如下所示:http://codepen.io/etpinard/pen/XKamdk。此处记录此问题以供参考:https://github.com/plotly/plotly.js/issues/719

要从geoJSON获取点,只需将geoJSON中的坐标用作数据变量中的lon和lat。此外,如果您尝试制作城市散点图,则应使用数据type: 'scattergeo'而不是type: 'choropleth'。这里是从剧情链接到教程:https://plot.ly/javascript/scatter-plots-on-maps/