Рисование графика с помощью NetworkX на базовой карте

Я хочу построить график на карте, где узлы будут определяться координатами (lat, long) и иметь некоторое значение.

Я смог нарисовать точки как диаграмму рассеяния на базовой карте, но не могу найти, как построить график на карте.

  • График GDAL с использованием matplotlib Базовая карта
  • почему у моего colorbar есть строки?
  • Python: скопируйте базовую карту или удалите данные с рисунка
  • Массовая анимация Matplotlib
  • Исключить белые грани в Matplotlib / Basemap pcolor plot
  • Заполните страны базой данных python
  • Благодарю.

    EDIT : Я добавил код о том, как я построил точки на базовой карте. Большая часть из них была адаптирована из кода в этой статье.

    from mpl_toolkits.basemap import Basemap from shapely.geometry import Point, MultiPoint import pandas as pd import matplotlib.pyplot as plt m = Basemap( projection='merc', ellps = 'WGS84', llcrnrlon=-130, llcrnrlat=25, urcrnrlon=-60, urcrnrlat=50, lat_ts=0, resolution='i', suppress_ticks=True) # Create Point objects in map coordinates from dataframe lon # and lat values # I have a dataframe of coordinates map_points = pd.Series( [Point(m(mapped_x, mapped_y)) for mapped_x, mapped_y in zip(df['lon'], df['lat'])]) amre_points = MultiPoint(list(map_points.values)) plt.clf() fig = plt.figure() ax = fig.add_subplot(111, axisbg='w', frame_on=False) fig.set_size_inches(18.5, 10.5) # Create a scatterplot on the map dev = m.scatter( [geom.x for geom in map_points], [geom.y for geom in map_points], 20, marker='o', lw=.25, facecolor='#33ccff', edgecolor='w', alpha=0.9,antialiased=True, zorder=3) m.fillcontinents(color='#555555') 

    Я получаю этот образ: карта

  • График Plot NetworkX из матрицы смещения в CSV-файле
  • Исключить белые грани в Matplotlib / Basemap pcolor plot
  • Что может заставить NetworkX & PyGraphViz работать в одиночку, но не вместе?
  • AttributeError в NetworkX, модуль не имеет атрибута max_clique
  • Решение NoSQL для постоянных графов в масштабе
  • Networkx: как показать атрибуты узла и края в графическом чертеже
  • 2 Solutions collect form web for “Рисование графика с помощью NetworkX на базовой карте”

    Вот один из способов сделать это:

     import networkx as nx import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap as Basemap m = Basemap( projection='merc', llcrnrlon=-130, llcrnrlat=25, urcrnrlon=-60, urcrnrlat=50, lat_ts=0, resolution='i', suppress_ticks=True) # position in decimal lat/lon lats=[37.96,42.82] lons=[-121.29,-73.95] # convert lat and lon to map projection mx,my=m(lons,lats) # The NetworkX part # put map projection coordinates in pos dictionary G=nx.Graph() G.add_edge('a','b') pos={} pos['a']=(mx[0],my[0]) pos['b']=(mx[1],my[1]) # draw nx.draw_networkx(G,pos,node_size=200,node_color='blue') # Now draw the map m.drawcountries() m.drawstates() m.bluemarble() plt.title('How to get from point a to point b') plt.show() 

    введите описание изображения здесь

    На сегодняшний день есть хорошая альтернатива базовой карте. Mplleaflet – это библиотека, вдохновленная mpld3. Он работает быстрее, чем базовая карта, более прост в использовании и позволяет визуализировать географические данные на красивой интерактивной openstreetmap. Входной сигнал может быть долготой и широтой, поэтому библиотека автоматически проектирует данные должным образом.

    Входной словарь pos, где узел (страна) является ключевым и длинным латом, сохраняется как значение.

      pos = {u'Afghanistan': [66.00473365578554, 33.83523072784668], u'Aland': [19.944009818523348, 60.23133494165451], u'Albania': [20.04983396108883, 41.14244989474517], u'Algeria': [2.617323009197829, 28.158938494487625], ..... 

    Построение графика так же просто, как:

     import mplleaflet fig, ax = plt.subplots() nx.draw_networkx_nodes(GG,pos=pos,node_size=10,node_color='red',edge_color='k',alpha=.5, with_labels=True) nx.draw_networkx_edges(GG,pos=pos,edge_color='gray', alpha=.1) nx.draw_networkx_labels(GG,pos, label_pos =10.3) mplleaflet.display(fig=ax.figure) 
    Python - лучший язык программирования в мире.