0
File "main.py", line 52, in <module>
    r2n(name)

  File "C:\Users\Riki\Documents\Universita\Erasmus\Personalization and Metadata modeling 02817\Final Project\friends_followers__redis_to_networkx.py", line 69, in r2n

    **nx.draw_spring(g,node_size=50,node_color='#32CD32',node_shape='o',edge_color='.1',with_labels=True,width=0.5)**

  File "C:\Python27\lib\site-packages\networkx-1.6-py2.7.egg\networkx\drawing\nx_pylab.py", line 876, in draw_spring
    draw(G,spring_layout(G),**kwargs)

  File "C:\Python27\lib\site-packages\networkx-1.6-py2.7.egg\networkx\drawing\nx_pylab.py", line 124, in draw
    cf=pylab.gcf()

  File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 369, in gcf
    return figure()

  File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 343, in figure
    **kwargs)

  File "C:\Python27\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 81, in new_figure_manager
    canvas = FigureCanvasTkAgg(figure, master=window)

  File "C:\Python27\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 188, in __init__
    self._tkcanvas.create_image(w/2, h/2, image=self._tkphoto)

  File "C:\Python27\lib\lib-tk\Tkinter.py", line 2198, in create_image
    return self._create('image', args, kw)

  File "C:\Python27\lib\lib-tk\Tkinter.py", line 2189, in _create
    *(args + self._options(cnf, kw))))

**_tkinter.TclError: bad screen distance "320.0"**

こんにちは、私はWindows64ビット用のPython2.7に取り組んでいます。突然その問題が発生しましたが、以前は機能していたので、私のコードは問題ないはずです(変更なしでプロットが表示されました)。

それが図書館の問題だと思いますが、どうしたらいいですか?

4

1 に答える 1

1

キャンバスアイテムを作成する前に、座標をintに変換してみてください。例えば:

self._tkcanvas.create_image(int(w/2), int(h/2), image=self._tkphoto)

この回答は私を大いに助けてくれたので、とても感謝しています。別の回答を追加できればいいのですが、閉じているので追加できません。編集を投稿してください。

matplotlibライブラリファイルを変更する必要がなかった私のために働いた解決策は、メソッドをオーバーライドするために新しいクラスを作成することです。2つの問題のあるメソッドは__init__resize(そして奇妙なことに、私が必要とするresizeのはオーバーロードすることだけですが、そこに修正を加えると、それは私のために働き始めましたか?)

とにかく、以下はPython2.7 Matplotlibからコピーされていることに注意してください。最初にローカルのmatplotlibバージョンを確認し、そこからコピーする方がよいでしょう。

# copy of /usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py
# with fix:
class FigureCanvasTkAggFix(FigureCanvasTkAgg):
  def __init__(self, figure, master=None, resize_callback=None):
    matplotlib.backends.backend_tkagg.FigureCanvasAgg.__init__(self, figure)
    self._idle = True
    t1,t2,w,h = self.figure.bbox.bounds
    w, h = int(w), int(h)
    self._tkcanvas = tk.Canvas(
      master=master, width=w, height=h, borderwidth=4)
    self._tkphoto = tk.PhotoImage(
      master=self._tkcanvas, width=w, height=h)
    self._tkcanvas.create_image(int(w/2), int(h/2), image=self._tkphoto) # fix
    self._resize_callback = resize_callback
    self._tkcanvas.bind("<Configure>", self.resize)
    self._tkcanvas.bind("<Key>", self.key_press)
    self._tkcanvas.bind("<Motion>", self.motion_notify_event)
    self._tkcanvas.bind("<KeyRelease>", self.key_release)
    for name in "<Button-1>", "<Button-2>", "<Button-3>":
      self._tkcanvas.bind(name, self.button_press_event)
    for name in "<ButtonRelease-1>", "<ButtonRelease-2>", "<ButtonRelease-3>":
      self._tkcanvas.bind(name, self.button_release_event)
    for name in "<Button-4>", "<Button-5>":
      self._tkcanvas.bind(name, self.scroll_event)
    root = self._tkcanvas.winfo_toplevel()
    root.bind("<MouseWheel>", self.scroll_event_windows)
    self._master = master
    self._tkcanvas.focus_set()
    self.sourced = dict()
    def on_idle(*ignore):
      self.idle_event()
      return True
  def resize(self, event):
    width, height = event.width, event.height
    printse("WH", width, height, "\n")
    if self._resize_callback is not None:
      self._resize_callback(event)
    # compute desired figure size in inches
    dpival = self.figure.dpi
    winch = width/dpival
    hinch = height/dpival
    self.figure.set_size_inches(winch, hinch)
    self._tkcanvas.delete(self._tkphoto)
    self._tkphoto = tk.PhotoImage(
      master=self._tkcanvas, width=width, height=height)
    self._tkcanvas.create_image(width/2,height/2,image=self._tkphoto)
    self.resize_event()
    self.show()
于 2012-04-29T21:44:40.873 に答える