Я работаю над проблемой анализа социальных сетей, где у меня есть ориентированный граф. Ранее у меня была проблема, когда я импортировал ребра в мой файл графика, но это было решено. Тем не менее, я столкнулся с другой проблемой при попытке построить график на карте, который ранее работал, когда он был ненаправленным. Я получаю эту ошибку «ValueError: Нераспознанный код: S», и вот весь мой сценарий:
import mplleaflet
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
import pandas as pd
импорт ребра и узла pandas фрейм данных
edges = pd.read_csv("./edges.csv", sep = ";")
nodes = pd.read_csv("./nodes_coordinates.csv", sep = ";")
установка направленного graph
G = nx.DiGraph()
G = nx.from_pandas_edgelist(edges, source = "from",
target = "to",
create_using = nx.DiGraph)
data = nodes.set_index("node").to_dict("index").items()
G.add_nodes_from(data)
nx.is_directed(G)
output: true
Ранее он был ненаправленным, и все на карте было возможно построить. Теперь, когда я сделал это, он больше не работает, чтобы нанести на карту, и я не знаю почему.
установка координат
coordinates_dict = {}
for node in nodes.node:
coordinates_dict[node] = list(nodes.loc[nodes.node == node ,['lon','lat']].values[0])
построение карты
fig, ax = plt.subplots(figsize =(20,13))
nx.draw(G, pos = coordinates_dict)
mplleaflet.display(fig = fig)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-43-33a2a6f2d48a> in <module>
1 fig, ax = plt.subplots(figsize =(20,13))
2 nx.draw(G, pos=coordinates_dict)
----> 3 mplleaflet.display(fig=fig)
~/anaconda3/lib/python3.7/site-packages/mplleaflet/_display.py in display(fig, closefig, **kwargs)
151 plt.close(fig)
152
--> 153 html = fig_to_html(fig, **kwargs)
154
155 # We embed everything in an iframe.
~/anaconda3/lib/python3.7/site-packages/mplleaflet/_display.py in fig_to_html(fig, template, tiles, crs, epsg, embed_links)
82 renderer = LeafletRenderer(crs=crs, epsg=epsg)
83 exporter = Exporter(renderer)
---> 84 exporter.run(fig)
85
86 attribution = _attribution + ' | ' + tiles[1]
~/anaconda3/lib/python3.7/site-packages/mplleaflet/mplexporter/exporter.py in run(self, fig)
49 import matplotlib.pyplot as plt
50 plt.close(fig)
---> 51 self.crawl_fig(fig)
52
53 @staticmethod
~/anaconda3/lib/python3.7/site-packages/mplleaflet/mplexporter/exporter.py in crawl_fig(self, fig)
116 props=utils.get_figure_properties(fig)):
117 for ax in fig.axes:
--> 118 self.crawl_ax(ax)
119
120 def crawl_ax(self, ax):
~/anaconda3/lib/python3.7/site-packages/mplleaflet/mplexporter/exporter.py in crawl_ax(self, ax)
136 self.draw_text(ax, artist)
137 for patch in ax.patches:
--> 138 self.draw_patch(ax, patch)
139 for collection in ax.collections:
140 self.draw_collection(ax, collection)
~/anaconda3/lib/python3.7/site-packages/mplleaflet/mplexporter/exporter.py in draw_patch(self, ax, patch, force_trans)
225 pathcodes=pathcodes,
226 style=linestyle,
--> 227 mplobj=patch)
228
229 def draw_collection(self, ax, collection,
~/anaconda3/lib/python3.7/site-packages/mplleaflet/leaflet_renderer.py in draw_path(self, data, coordinates, pathcodes, style, offset, offset_coordinates, mplobj)
123 else:
124 data = [c.tolist() for c in data]
--> 125 rings = list(iter_rings(data, pathcodes))
126
127 if style['facecolor'] != 'none':
~/anaconda3/lib/python3.7/site-packages/mplleaflet/utils.py in iter_rings(data, pathcodes)
12 ring.append(point)
13 else:
---> 14 raise ValueError('Unrecognized code: {}'.format(code))
15
16 if len(ring):
ValueError: Unrecognized code: S
Большое вам спасибо!
файл csv edge
файл узла