Изображение, добавленное к одному узлу графа networkx, не отображается - PullRequest
1 голос
/ 19 сентября 2019

Я попытался добавить изображение jpg к одному конкретному узлу графика.Там нет ошибки, но изображение не отображается в узле.Узел, на котором я пытаюсь разместить изображение, - "KCT BS".

img=mpimg.imread('kctbs.jpg')
G=nx.Graph()
G.add_node(('KCT BS'),attr_dict={'image':'img'}) #added the image to the node named #KCTBS
G.add_edges_from([("KCT BS","Placements"),("KCT BS","Courses"),("KCT BS","Faculty"),("KCT BS","Students"),("Faculty","Core:21")],length=100)
pos = nx.spring_layout(G, scale=10)
nx.draw(G,with_labels=True,pos=pos,node_size=500, node_color='r')
# G.node.items(0)
G.nodes['KCT BS']['image']=img

1 Ответ

1 голос
/ 19 сентября 2019

Вы не можете нарисовать изображение как узел в сети x.Но вы можете нарисовать изображение поверх узла на его позиции с помощью matplotlib :

import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('hex.png')
G = nx.Graph()
G.add_node('KCT BS')
G.add_node('WAKA')
pos = nx.spring_layout(G, scale=10)
nx.draw(
    G,
    with_labels=True,
    pos=pos,
    node_size=500,
    node_color='r'
)

ax = plt.gca()
fig = plt.gcf()
trans = ax.transData.transform
trans2 = fig.transFigure.inverted().transform
imsize = 0.1

(x,y) = pos['KCT BS']
xx,yy = trans((x, y))
xa,ya = trans2((xx, yy))
a = plt.axes([xa-imsize/2.0, ya-imsize/2.0, imsize, imsize])
a.imshow(img)
a.set_aspect('equal')
a.axis('off')
plt.show()

. Он нарисует обычный график networkx (с кругами в качестве узлов), а затем нарисует вашу картинку сверхусуществующего графического изображения (обратите внимание, что если у вас есть прозрачное изображение, подобное моему, вы увидите исходный узел networkx под ним).

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...