from PyQt5 import QtWidgetsfrom matplotlib.figure import Figurefrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvasimport matplotlib
# Ensure using PyQt5 backendmatplotlib.use('QT5Agg')
# Matplotlib canvas class to create figureclass MplCanvas(Canvas): def __init__(self): self.fig = Figure() self.ax = self.fig.add_subplot(111) self.ax.cla()#test Canvas.__init__(self, self.fig) Canvas.setSizePolicy(self, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) Canvas.updateGeometry(self)
# Matplotlib widgetclass MplWidget(QtWidgets.QWidget): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) # Inherit from QWidget self.canvas = MplCanvas() # Create canvas object self.vbl = QtWidgets.QVBoxLayout() # Set box for plotting self.vbl.addWidget(self.canvas) self.setLayout(self.vbl)
G = nx.Graph()#create a networkx graph Comparison_List = pd.read_csv("SampleTracker.csv",index_col=[0]) #just some data filtering for the next few steps Comparison_List2 = Comparison_List[Comparison_List["Status"]=='Finalized'].Sample_ID.tolist() Comparison_List3 = Comparison_List[Comparison_List["Status"]=='Data Processing Needed'].Sample_ID.tolist() fulledgelist=[] for i in obj_Network.index.tolist(): edgelist = eval(obj_Network.loc[i]["Trait_1"]) if len(edgelist) < len(Comparison_List2): edgelist_condensed = edgelist for y in edgelist_condensed: Value = (i,y) fulledgelist.append(Value) goldlist = [item for item in fulledgelist] G.add_nodes_from(obj_Network.index.tolist(),color='yellow') #Add nodes G.add_nodes_from(Comparison_List2,color='green') G.add_nodes_from(Comparison_List3,color='orange') G.add_edges_from(goldlist,weight=0.8) #connect the nodes nx.draw_spring(G, with_labels=True,ax=self.widget.canvas.ax)#Altered to display on ax axis self.widget.canvas.draw() #this works as an MPL.pyplot object (with correct back-ends enabled)