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

Смежные вопросы