OSMnx Добавить заголовок на график

Я использую замечательную библиотеку OSMnx, созданную Джеффом Боингом. Я строю уличную сеть на основе одного из его учебных пособий. Все работает отлично. Тем не менее, я хотел бы построить более 40 графиков, используя разные центральности. Поэтому я хотел бы добавить заголовок с каждым районом и названием центральности к каждому участку. В настоящее время это выглядит так.

Построенная сеть OSMnx Street

Вот как выглядит мой код.

def display_most_important_node(G_centralities_sorted_dict, G_dictionary, district, centrality_measure='betweenness_centrality'):
    node_color = ['red' if node == G_centralities_sorted_dict[district][centrality_measure][0][0] else '#336699' for node in ox.project_graph(G_dictionary[district]).nodes()]
    node_size = [40 if node == G_centralities_sorted_dict[district][centrality_measure][0][0] else 20 for node in ox.project_graph(G_dictionary[district]).nodes()]

    fig, ax = ox.plot_graph(ox.project_graph(G_dictionary[district]), annotate=False, edge_linewidth=1.5, node_size=node_size, fig_height=10, node_color=node_color, node_zorder=2)

Спасибо вам, ребята.

1 ответ

Решение

По умолчанию функции пакета OSMnx вызывают plt.show() уже до того, как они вернут fig а также ax ручки, что означает, что вы больше не можете манипулировать Figure а также Axes экземпляры (я предполагаю, что это сделано для предотвращения искажения рисунка после создания). Это делается с помощью специальной функции под названием save_and_show(), который называется внутренне. Вы можете предотвратить показ фигуры, передав ключевые слова show=False а также close=False в соответствии с функцией построения графика (close=False необходимо, потому что цифры, которые не отображаются автоматически, по умолчанию закрыты в save_and_show()). С этими ключевыми словами, fig а также ax можно манипулировать после вызова функции, но теперь plt.show() должен быть вызван явно. Вот еще полный пример после ОП:

def display_most_important_node(G_centralities_sorted_dict, G_dictionary, district, centrality_measure='betweenness_centrality'):
    node_color = ['red' if node == G_centralities_sorted_dict[district][centrality_measure][0][0] else '#336699' for node in ox.project_graph(G_dictionary[district]).nodes()]
    node_size = [40 if node == G_centralities_sorted_dict[district][centrality_measure][0][0] else 20 for node in ox.project_graph(G_dictionary[district]).nodes()]

    fig, ax = ox.plot_graph(ox.project_graph(G_dictionary[district]), annotate=False, edge_linewidth=1.5, node_size=node_size, fig_height=10, node_color=node_color, node_zorder=2, show=False, close=False)

    ax.set_title('subplot title')
    fig.suptitle('figure title')
    plt.show()

Обратите внимание, что не все функции OSMnx принимают show а также close ключевые слова. Например, plot_shape не. Надеюсь это поможет.

Другие вопросы по тегам