Проблема с загрузкой графика из файла pickle - PullRequest
2 голосов
/ 07 мая 2020

Как часть программы, я должен прочитать график из файла pickle и затем вернуть его в виде графика. Должен сказать, что для этого я использую OSMnx и networkx.

У меня уже есть файл pickle, содержащий график, загруженный с OSMnx. Но когда я вызываю функцию, возникает ошибка.

Код:

import networkx
import osmnx as ox
import requests
import matplotlib.cm as cm
import matplotlib.colors as colors
import pickle
ox.config(use_cache=True, log_console=True)
ox.__version__


def load_graph(filename):
    """Uploads a graph from a pickle file and it returns it"""
    infile = open(filename, 'rb')
    G = pickle.load(infile)
    infile.close()
    return G


def main():
    ox.plot_graph(load_graph("graph1.pickle"))

main()

Ошибка:

AttributeError: 'str' object has no attribute 'nodes'

Что мне делать?

1 Ответ

1 голос
/ 08 мая 2020

Вы не предоставили воспроизводимый фрагмент кода (например, я не знаю, как вы сгенерировали файл graph1.pickle или что он содержит), но этот аналогичный фрагмент кода отлично работает с травлением:

import osmnx as ox
import pickle
ox.config(use_cache=True, log_console=True)
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive')
pickle.dump(G, open('graph.pickle', 'wb'))
G2 = pickle.load(open('graph.pickle', 'rb'))
fig, ax = ox.plot_graph(G2)

Кстати: в качестве альтернативы травлению для сериализации графов вы также можете использовать встроенные в OSMnx функции save_graphml и load_graphml .

...