ArtificialQualia / PyEveLiveDPS

PyEveLiveDPS (PELD) is a live DPS calculator and grapher for EVE Online
GNU General Public License v3.0
157 stars 27 forks source link

matplotlib value error #54

Closed november781 closed 4 years ago

november781 commented 4 years ago

I am working on possibly setting up an Arch User Repo for this project to make it easier for Eve players using manjaro/arch and any derivatives to install this wonderful program, however, I am running into an issue when launching the program.

Traceback (most recent call last):
  File "./PyEveLiveDPS/peld.py", line 62, in <module>
    App()
  File "./PyEveLiveDPS/peld.py", line 25, in __init__
    graphWindow = mainWindow.MainWindow()
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/mainWindow.py", line 94, in __init__
    self.fleetWindow = FleetWindow(self)
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/fleetWindow.py", line 162, in __init__
    self.stopMove()
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/fleetWindow.py", line 197, in stopMove
    entry['graph'].readjust(0)
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/graph.py", line 58, in readjust
    bottom=(15/self.windowWidth), wspace=0, hspace=0)
  File "/home/zipzip/anaconda3/envs/PyEveLiveDPS/lib/python3.6/site-packages/matplotlib/figure.py", line 1620, in subplots_adjust
    self.subplotpars.update(*args, **kwargs)
  File "/home/zipzip/anaconda3/envs/PyEveLiveDPS/lib/python3.6/site-packages/matplotlib/figure.py", line 228, in update
    raise ValueError('left cannot be >= right')
ValueError: left cannot be >= right

any idea what might be happening?

using anaconda so I can have a bit more control over dependency versions but that should not be causing an issue with the app

november781 commented 4 years ago

This is the entire log output

2019-10-16 21:07:13,229:root:INFO - logger initialized
2019-10-16 21:07:13,229:root:INFO - changing log level to value in settings file...
2019-10-16 21:07:13,229:watchdog.observers.inotify_buffer:DEBUG - in-event <InotifyEvent: src_path=b'/home/zipzip/.peld.log', wd=1, mask=IN_MODIFY, cookie=0, name=b'.peld.log'>
2019-10-16 21:07:13,229:watchdog.observers.inotify_buffer:DEBUG - in-event <InotifyEvent: src_path=b'/home/zipzip/.peld.log', wd=1, mask=IN_MODIFY, cookie=0, name=b'.peld.log'>
2019-10-16 21:07:13,230:root:INFO - log level set to 20
2019-10-16 21:07:13,305:root:INFO - Processing log file: /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_222339.txt
2019-10-16 21:07:13,306:root:INFO - Log /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_222339.txt is not a character log.
2019-10-16 21:07:13,306:root:INFO - Processing log file: /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_222406.txt
2019-10-16 21:07:13,306:root:INFO - Log language is english
2019-10-16 21:07:13,307:root:INFO - No overview settings set, showing overview notification for this session...
2019-10-16 21:07:13,337:root:INFO - Processing log file: /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_231516.txt
2019-10-16 21:07:13,337:root:INFO - Log /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_231516.txt is not a character log.
2019-10-16 21:07:13,337:root:INFO - Processing log file: /home/zipzip/Games/eve-online/drive_c/users/zipzip/My Documents/EVE/logs/Gamelogs/20191015_231536.txt
2019-10-16 21:07:13,338:root:INFO - Log language is english
2019-10-16 21:07:13,657:root:ERROR - left cannot be >= right
Traceback (most recent call last):
  File "./PyEveLiveDPS/peld.py", line 62, in <module>
    App()
  File "./PyEveLiveDPS/peld.py", line 25, in __init__
    graphWindow = mainWindow.MainWindow()
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/mainWindow.py", line 94, in __init__
    self.fleetWindow = FleetWindow(self)
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/fleetWindow.py", line 162, in __init__
    self.stopMove()
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/fleetWindow.py", line 197, in stopMove
    entry['graph'].readjust(0)
  File "/home/zipzip/PyEveLiveDPS/PyEveLiveDPS/graph.py", line 58, in readjust
    bottom=(15/self.windowWidth), wspace=0, hspace=0)
  File "/home/zipzip/anaconda3/envs/PyEveLiveDPS/lib/python3.6/site-packages/matplotlib/figure.py", line 1620, in subplots_adjust
    self.subplotpars.update(*args, **kwargs)
  File "/home/zipzip/anaconda3/envs/PyEveLiveDPS/lib/python3.6/site-packages/matplotlib/figure.py", line 228, in update
    raise ValueError('left cannot be >= right')
ValueError: left cannot be >= right
ArtificialQualia commented 4 years ago

Thanks for the bug report.

Anaconda is fine for running this, and in fact I recommend it.

The minimum size for the fleet window was set too small, so if you made it really tiny then it messes up the graph axis readjustment process. I've committed a fix to master, so you should be able to git pull and be good to go.

Also I appreciate you making a linux package for this! I only do light testing on linux boxes since I'm mainly targeting windows users, so if you think there are changes that would enhance the linux experience let me know.

november781 commented 4 years ago

thanks!

november781 commented 4 years ago

Issue is still present

 self.windowWidth = self.winfo_width()
        if (highestAverage < 900):
            self.graphFigure.subplots_adjust(left=(33/self.windowWidth), top=(1-15/self.windowWidth), 
                                             bottom=(15/self.windowWidth), wspace=0, hspace=0)
        elif (highestAverage < 9000):
            self.graphFigure.subplots_adjust(left=(44/self.windowWidth), top=(1-15/self.windowWidth), 
                                             bottom=(15/self.windowWidth), wspace=0, hspace=0)
        elif (highestAverage < 90000):
            self.graphFigure.subplots_adjust(left=(55/self.windowWidth), top=(1-15/self.windowWidth), 
                                             bottom=(15/self.windowWidth), wspace=0, hspace=0)
        else:
            self.graphFigure.subplots_adjust(left=(66/self.windowWidth), top=(1-15/self.windowWidth), 
                                             bottom=(15/self.windowWidth), wspace=0, hspace=0)
        if (highestAverage < 100):
            self.graphFigure.axes[0].set_ylim(bottom=0, top=100)
        else:
            self.graphFigure.axes[0].set_ylim(bottom=0, top=(highestAverage+highestAverage*0.1))
        self.graphFigure.axes[0].get_yaxis().grid(True, linestyle="-", color="grey", alpha=0.2)
        self.canvas.draw()

this seams to be the problem code as there is no right value declared so left is always bigger

its in graph.py

november781 commented 4 years ago

this is the maplotlib verification code this project seems to be running afoul of.

        if self.validate:
            if self.left >= self.right:
                reset()
                raise ValueError('left cannot be >= right')

            if self.bottom >= self.top:
                reset()
                raise ValueError('bottom cannot be >= top')        if self.validate:
            if self.left >= self.right:
                reset()
                raise ValueError('left cannot be >= right')

            if self.bottom >= self.top:
                reset()
                raise ValueError('bottom cannot be >= top')
ArtificialQualia commented 4 years ago

That shouldn't be the problem, right is specified when the graph is initialized and matplotlib stores that value. Can you send me your settings file? It should be ~/.peld for you.

november781 commented 4 years ago
    {
        "profile": "Default",
        "logLevel": 20,
        "fleetServer": "peld-fleet.com",
        "profileSettings": {
            "windowX": 0,
            "windowY": 0,
            "windowHeight": 225,
            "windowWidth": 350,
            "compactTransparency": 65,
            "seconds": 10,
            "interval": 100,
            "graphDisabled": 0,
            "dpsIn": [
                {
                    "color": "#FF0000",
                    "transitionValue": 0,
                    "labelOnly": 0,
                    "showPeak": 0
                }
            ],
            "dpsOut": [
                {
                    "color": "#00FFFF",
                    "transitionValue": 0,
                    "labelOnly": 0,
                    "showPeak": 0
                }
            ],
            "logiOut": [],
            "logiIn": [],
            "capTransfered": [],
            "capRecieved": [],
            "capDamageOut": [],
            "capDamageIn": [],
            "mining": [],
            "labels": {
                "dpsIn": {
                    "row": 0,
                    "column": 7,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "dpsOut": {
                    "row": 0,
                    "column": 0,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "logiOut": {
                    "row": 1,
                    "column": 0,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "logiIn": {
                    "row": 1,
                    "column": 7,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "capTransfered": {
                    "row": 1,
                    "column": 1,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "capRecieved": {
                    "row": 1,
                    "column": 6,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "capDamageOut": {
                    "row": 0,
                    "column": 1,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "capDamageIn": {
                    "row": 0,
                    "column": 6,
                    "inThousands": 0,
                    "decimalPlaces": 1
                },
                "mining": {
                    "row": 2,
                    "column": 7,
                    "inThousands": 0,
                    "decimalPlaces": 1
                }
            },
            "labelColumns": [
                4,
                4
            ],
            "detailsOrder": [
                "dpsOut",
                "dpsIn",
                "logiOut",
                "logiIn",
                "capTransfered",
                "capRecieved",
                "capDamageOut",
                "capDamageIn"
            ],
            "detailsWindow": {
                "show": 1,
                "width": 200,
                "height": 250,
                "x": 0,
                "y": 0
            },
            "fleetWindow": {
                "show": 1,
                "width": 600,
                "height": 400,
                "x": 200,
                "y": 200,
                "showAggregate": 1,
                "showDpsOut": 1,
                "showDpsIn": 1,
                "showLogiOut": 1
            }
        }
    }
]
ArtificialQualia commented 4 years ago

Yeah, your settings are fine. Turns out this is a linux-specific issue. Linux's tkinter wasn't properly sizing the fleet window GUI objects during initialization of the window.

I've committed another fix. Try doing a git pull again and let me know if it's working this time.

november781 commented 4 years ago

seems to be working fine!