2016-03-11 74 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/