Как поместить текст в правом верхнем углу рисунка networkx

#python #matplotlib #networking

Вопрос:

Я рисую график и хотел бы добавить текст в правом верхнем углу. Однако я не уверен, как это сделать. Я пытался:

 import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout

T = nx.balanced_tree(2, 5)


pos = graphviz_layout(T, prog="dot")
nx.draw(T, pos, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.text(0,0,"******************")
plt.show()
 

чтобы посмотреть, смогу ли я вообще показать какой-либо текст. Он показывает звездочки в левом нижнем углу. Как мне узнать разрешение диаграммы, чтобы я мог определить, где находится верхний правый угол?

Ответ №1:

Вы можете прочитать в networkx.drawing.nx_pylab.draw_networkx :

draw_networkx(G, pos=Нет, стрелки=Нет, with_labels=True, **kwds)

Параметры:

ax : Объект Оси Matplotlib, необязательно Рисовать график в указанных осях Matplotlib.

Затем вы можете создать fig, axe = plt.subplots() , передать axe nx.draw и добавить заголовок, чтобы axe затем вы могли показать заголовок для рисования, как показано ниже:

Задайте заголовок с matplotlib.axes.Axes.set_title помощью , в котором есть параметры для задания местоположения заголовка, включая использование matplotlib.text аргументов. (например x=1 , или loc='right' ).

 import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout

T = nx.balanced_tree(2, 5)

fig, axe = plt.subplots(figsize=(12,7))
axe.set_title('Title for NetworkX', loc='right')

pos = graphviz_layout(T, prog="dot")
nx.draw(T, pos, ax = axe, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.show()
 

Выход:

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

  • При использовании x= заголовок центрируется x по оси x; отрегулируйте значение для точного позиционирования.
 fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(10, 4))
ax1.set_title('Title for NetworkX', loc='right')

ax2.set_title('Title for NetworkX', x=.68)

ax3.set_title('Title for NetworkX', x=1)
fig.tight_layout()
 

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

Комментарии:

1. Я вижу «loc {«центр», «слева», «справа»}, по умолчанию: rcParams[«axes.titlelocation»] (по умолчанию: «центр»)» в matplotlib.org/stable/api/_as_gen/… но ничего для x =1 . Это то же самое, что и loc?

2. Огромное спасибо.

3. @Ануш добро пожаловать 😉