1

对此问题的任何帮助表示赞赏。

我使用 matplotlib 编写了以下代码,在同一轴上绘制一个图形和一些圆圈。

import sys,os,re
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
from matplotlib.patches import Ellipse, Circle

class GraphForPlot:
  def __init__(self):
    self.G = nx.Graph()
    self.Components = []
    self.ActiveStatus = {}
    self.Nodes = []
    self.Position = {}
    self.Color = []
    self.p = {}

在主要功能中,我有以下内容

fig, PlotAxes = plt.subplots(nrows=1, ncols=2)
plt.tight_layout()
for i in range(0, len(GPlot)):
  PlotAxes[i].xaxis.set_major_formatter(mtick.NullFormatter())
  PlotAxes[i].yaxis.set_major_formatter(mtick.NullFormatter())
  PlotAxes[i].axis([-25,1025,-25,1025])
  for j in GPlot[i].G.nodes():
    PlotAxes[i].add_artist(Circle((GPlot[i].Position[j][0],GPlot[i].Position[j][1]), GPlot[i].p[j], color='y'))
  nx.drawing.nx_pylab.draw_networkx_nodes(GPlot[i].G, GPlot[i].Position, node_size=10, node_color=GPlot[i].Color, ax=plt.subplot(1,2,i+1))
  if (GPlot[i].G.edges != []): nx.drawing.nx_pylab.draw_networkx_edges(GPlot[i].G, GPlot[i].Position, edge_color = 'black', ax=plt.subplot(1,2,i+1))
  PlotAxes[i].set_aspect(1)

我想要什么:我希望圆圈在下面,然后是图表在上面。(圆圈层顶部的边缘)。

我得到了什么:我看不到图中的边缘。我的猜测是它出现在圆圈下方。

示例数据实例。

这是数据

GPlot[0].Components = [[0],[1],[2],[4],[3,5]]
GPlot[0].ActiveStatus = {(0,): 0, (1,): 1, (2,): 0, (4,): 1, (3, 5): 1}
GPlot[0].p = {0: 0.0, 1: 179.5, 2: 0.0, 3: 179.5, 4: 179.5, 5: 179.5}
GPlot[0].Position = {0: [918.476975980191, 566.175809107923], 1: [712.224117254128, 320.20223881946], 3: [136.674359018882, 835.172432802382], 4: [115.261650368544, 74.1499048601371], 5: [1.41743386570314, 502.881853371971]}
GPlot[0].Color = ['black', 'red', 'white', 'white', 'white']

GPlot[1].Components = [[0],[1],[2],[3],[4],[5]]
GPlot[1].ActiveStatus = {(0,): 0, (1,): 0, (2,): 1, (3,): 1, (4,): 1, (5,): 1}
GPlot[1].p = {0: 0.0, 1: 0.0, 2: 179.5, 3: 179.5, 4: 179.5, 5: 179.5}
GPlot[1].Position = {0: [689.232465921313, 844.969550926396], 2: [942.858050963379, 484.834574765457], 3: [136.674359018882, 835.172432802382], 4: [115.261650368544, 74.1499048601371], 5: [1.41743386570314, 502.881853371971]}
GPlot[1].Color = ['black', 'red', 'white', 'white', 'white']

对于图表,请执行以下操作:

H = nx.path_graph(6)
GPlot[0].G.add_nodes_from(H)
GPlot[0].G.add_edge(3,5)
GPlot[1].G.add_nodes_from(H) 

我希望这已经足够了。

4

1 回答 1

2

我想你想改变zorder,正如你在这个例子中看到的那样。

我不熟悉 networkx 包,所以我不知道如何指定它用于创建图形绘图的艺术家的 zorder。

于 2013-03-06T14:57:07.040 回答