SetEnableLegend bringt Fehler

Plattformunabhängige GUIs mit wxWidgets.
bython1989
User
Beiträge: 1
Registriert: Mittwoch 24. Mai 2017, 11:00

SetEnableLegend bringt Fehler

Beitragvon bython1989 » Mittwoch 24. Mai 2017, 11:53

Hallo Leute,

ich bin relativ neu auf dem Gebiet!
Ich habe mir eine Gui-erzeugt, um feste Funktionen zu plotten. Soll als Grundkonstruktion für ein anderes Programm dienen.
Die Anleitung habe ich hier gefunden
https://www.blog.pythonlibrary.org/2010 ... th-python/

Wenn ich aber die Legende einfügen will, bringt er mir immer diesen Fehler.
Traceback (most recent call last):
File "C:\Phyton\lib\site-packages\wx\lib\plot\plotcanvas.py", line 2154, in OnSize
self._Draw(graphics, xSpec, ySpec)
File "C:\Phyton\lib\site-packages\wx\lib\plot\plotcanvas.py", line 1889, in _Draw
legendTextExt)
File "C:\Phyton\lib\site-packages\wx\lib\plot\plotcanvas.py", line 2240, in _drawLegend
if isinstance(o, PolyMarker) or isinstance(o, BoxPlot):
NameError: global name 'PolyMarker' is not defined

Hier noch mein Quellcode:
  1. import wx
  2. import numpy as np
  3. from wx.lib.plot import PolyLine, PlotCanvas, PlotGraphics,PolyMarker
  4.  
  5. def drawBarGraph(X_Range):
  6.     x_start=X_Range[0]
  7.     x_end = X_Range[1]
  8.     points1=[]
  9.     points2=[]
  10.     points3=[]
  11.  
  12.     for i in np.arange(x_start,x_end+0.1, 0.1):
  13.         points1.append([i, i])
  14.         points2.append([i, i ** 2])
  15.         points3.append([i, i**3])
  16.     line1 = PolyLine(points1, colour="green", legend="linear", width=1)
  17.     line2 = PolyLine(points2, colour="red", legend="quadratic", width=1)
  18.     line3 = PolyLine(points3, colour="blue", legend="poly", width=1)
  19.     return PlotGraphics([line1, line2, line3])
  20.  
  21.  
  22. class MyGraph_wx(wx.Frame):
  23.  
  24.     def __init__(self,parent,id,title):
  25.         wx.Frame.__init__(self,parent,id,title)
  26.         self.parent = parent
  27.         self.initialize()
  28.  
  29.     def initialize(self):
  30.         #Anlegen der Gitterstruktur
  31.         global sizer
  32.         sizer = wx.GridBagSizer()
  33.         self.canvas=PlotCanvas(self)
  34.         sizer.Add(self.canvas, (0, 1), (3, 3), wx.EXPAND)
  35.         self.txtXRange=wx.TextCtrl(self,wx.ID_ANY,value=u"X-Range as List[start,end]")
  36.         self.Bind(wx.EVT_TEXT_ENTER,self.onPressEnter)
  37.         sizer.Add(self.txtXRange,(0,0))
  38.         self.Button=wx.Button(self,wx.ID_ANY,label="Show Graph")
  39.         self.Button.Bind(wx.EVT_BUTTON,self.onButtonClick)
  40.         sizer.Add(self.Button,(2,0))
  41.         sizer.AddGrowableCol(1)
  42.         sizer.AddGrowableRow(2)
  43.         self.SetSizerAndFit(sizer)
  44.         self.Show(True)
  45.  
  46.     def onButtonClick(self,event):
  47.         X_Range=[]
  48.         X_Range=self.txtXRange.Value.split(";")
  49.         for i in range(len(X_Range)):
  50.             X_Range[i]=float(X_Range[i])
  51.         self.canvas.Draw(drawBarGraph(X_Range))
  52.         self.canvas.Refresh()
  53.         self.canvas.Zoom(((X_Range[0]+X_Range[1])/2,0),(1,1))
  54.     def onPressEnter(self,event):
  55.         points=[]
  56.         points = [(1, 0), (1, 10)]
  57.         self.canvas.Draw(PlotGraphics([PolyLine(points,colour="black",legend="Legende",width =10)]))
  58.         self.canvas.SetEnableLegend(True)
  59.         self.canvas.Refresh()
  60. if __name__ == "__main__":
  61.     app = wx.App()
  62.     window = MyGraph_wx(None,wx.ID_ANY,"Hoffentlich klappt das")
  63.     app.MainLoop()


Ich interpretiere es mit Phyton 2.7.13 und wxphyton Phoenix

Danke schon mal im voraus
Zuletzt geändert von Anonymous am Mittwoch 24. Mai 2017, 12:36, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder