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