-------- companytrades.csv --------Пытаясь реализовать NetworkX в graphicsscene
date,Company1,Company2
1/2/2017,1001,1111
1/3/2017,1001,1100
1/4/2017,1111,1001
1/5/2017,1100,1001
1/6/2017,1011,1001
1/7/2017,1001,1111
1/8/2017,1111,1100
1/9/2017,1100,1011
Я нашел интересный пример набора классов, реализующих NetworkX в graphicsscene GraphNetworkX.py
Я использую следующий код для реализации этих трех модулей
--------- netxgui.py --------
import pandas as pd
from numpy import *
import sys
from math import *
from PyQt4 import QtCore,QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import networkx as nx
import GraphNetworkX
from x import *
pf = pd.read_csv('/desktop/companytrades.csv',header=0,index_col=['date'])
#setup the needed variables
if __names__ == "__main__":
app = QtGui.QApplication(sys.argv)
app.setStyle("Plastique")
class netx(QtGui.QDialog):
def __init__(self):
super(netx,self).__init__()
self.uiNX = Ui_Form()
self.uiNX.setupUi(self)
G = nx.from_pandas_dataframe(pf,'Company1','Company2',create_using=nx.DiGraph())
Pos = nx.spring_layout(g,scale=300)
scene = GraphNetworkx.GraphGraphicsScene(G=g,pos=Pos)
self.uiNX.neworkx_graphicsView.setScene(scene)
NX = netx()
NX.show()
sys.exit(exit(app.exec_())
app.deleteLater()
------- x.py -------
from PyQt4 import QtCore,QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.unicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(1492,1029)
self.networkx_graphicsView = QtGui.QGraphicsView(Form)
self.networkx_graphicsView.setGeometry(QtCore.QRect(240,70,971,911))
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(5)
sizePolicy.setHeightForWidth(self.networkx_graphicsView.sizePolicy().hasHeightForWidth())
self.networkx_graphicsView.setSizePolicy(sizePolicy)
self.networkx_graphicsView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.networkx_graphicsView.setObjectName(_fromUtf8("networkx_graphicsView"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self,Form):
Form.setWindowTitle(_translate("Form","Form",None))
У меня возникли проблемы с этим. Проблема, с которой я столкнулась, находится в GraphNetworkX под функцией drawGraph. Кажется, что функция печати работает правильно с n, но я действительно не понимаю аргументации для ее замены i.
i = 0
for n in G.nodes():
#print str(pos[n][0]) + " " + str(pos[n][1])+ " "+str(n)
self.addNode(pos[i][0], pos[i][1], n)
i += 1
Я выполнил эксперимент, заменив i на n, и добавление узлов, похоже, сработало, но затем у меня возникают проблемы с добавлением ребер.
for e in G.edges():
node1 = self.nodes[e[0]]
node2 = self.nodes[e[1]]
self.addEdge(node1, node2)
Он продолжает говорить, что е [0] из range..considering функции Nodes.py, чтобы превратить self.nodes в список объектов Nodes.nodes, я подумал, может быть, что это заполнитель внутри каждый из объектов, но я не совсем уверен. Затем я попытался сделать это изменение:
node1 = e[0]
node2 = e[1]
, но затем я получаю ошибку в Edge.py о том, что
x1 = node1.centerX()
целое не имеет функцию CenterX()
Я немного в убыток. Может ли кто-нибудь помочь мне понять это и помочь мне заставить это работать?
Спасибо за совет. Я сделаю исправления и вернусь к результатам. Я сомневаюсь, что это полностью решит проблему. Я добавил x.py, потому что имею дело с PyQt4, и по опыту знаю, что с графическим интерфейсом меняется среда и поведение компонентов. – Daniel
Ещё не работает .. пожалуйста, помогите. – Daniel
что не работает? Я полагаю, что вы не используете точный код сверху (netxgui.py), так как он не работает как есть. Но если вы, по крайней мере, вам нужно будет сделать отступы определения класса – Bonlenfum