Matplotlib plot problem

I’m sure this is a simple problem, but I’ve been going around in circles several days trying to figure this out.

Here’s my code.

http://pastebin.com/n83dGhG4

Basically, I’m trying to get my pyqt4 button signal to execute the plot command (line 122). A lot of this code was copied from the matplotlib example page. If I uncomment line 148, the figure will successfully plot. I don’t understand why what I’m doing on line 122 isn’t equivalent to line 148.

thx for your help.

Matt

I would look at line 24/25. You are constructing a MyStaticMplCanvas instance on 24, with a self.main_widget as the parent. But then on 25, you explicitly call the constructor again (which is not a good idea), but with the main window as the parent (the self argument). I bet that is throwing off a couple things.

The code is extremely hard to follow, and I think it is a bad example to build off of in the first place (unnescessary subclassing). Perhaps a different example would be more suitable? What programming language are you coming from?

Ben Root

···

On Fri, Dec 5, 2014 at 4:12 PM, Matthew Albert <matthewa927@…911…> wrote:

I’m sure this is a simple problem, but I’ve been going around in circles several days trying to figure this out.

Here’s my code.

http://pastebin.com/n83dGhG4

Basically, I’m trying to get my pyqt4 button signal to execute the plot command (line 122). A lot of this code was copied from the matplotlib example page. If I uncomment line 148, the figure will successfully plot. I don’t understand why what I’m doing on line 122 isn’t equivalent to line 148.

thx for your help.

Matt


Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server

from Actuate! Instantly Supercharge Your Business Reports and Dashboards

with Interactivity, Sharing, Native Excel Exports, App Integration & more

Get technology previously reserved for billion-dollar corporations, FREE

http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Hi Benjamin and others:

Thx for your comments. I’ve tried to follow your recommendations and simplify the code:

http://pastebin.com/JHhkcCzt

Prior to these modifications I would at least see my axes render on the gridLayout object, but now that doesn’t populate.

Here’s my attempt to talk through what I think is happening:

LINE 9: I import the FigureCanvasQTAgg class. A figureCanvas is an object on which we can attach figures, and subsequently axes and plots. I guess since I want to embed this figureCanvas into a pyqt4 GUI, I’m importing a special type of figureCanvas from the backend_qtAgg library to do this?? Not sure if that’s the case.

LINE 24: I want to create a FigureCanvas object called thePlot on which I will create a simple line plot. It seems that in order to instantiate this new object, I need to pass a Figure object so I use LINE 24 to do that.

LINE 25: In this line I create a a FigureCanvas object called thePlot and pass the Figure I created in LINE 24.

LINE 26: My objective is to attached this plot to a pyqt4 GUI. I’ve created a gridLayout on the GUI. In this line I execute the addWidget method and pass thePlot object as argument. A FigureCanvas is a QWidget apparently which makes this a reasonable thing to do I guess…

LINE 119: I’m now in the pushbutton signal function. This line sets the parent of thePlot to None. I have no idea what this does. This is just something I put in there because I hoped it would help make things work. Adding it didn’t help.

LINE 120: Here I set the variable self.axes equal to the return of the fig function add_subplot. This is something I just copied from an example. I understand that add_subplot(111) creates one row and column of figures and selects the first one(from matlab), but I’m not really grasping what’s really going on here. I’ve followed the declaration of add_subplot and find that the function is return something called a subplot_class_factory. I don’t really know what this is either so I followed this declaration too. I find that a subplot_class_factory is a function that creates a new class that inherits from SubplotBase. Again I’m not sure what a subplotbase is and decide to just accept the original statement and hope it works. Is looking at the declarations a reasonable way to figure out how things work in matplotlib? I don’t know a better strategy. For somebody with so little experience, it’s been very difficult to gain much benefit from.

Line 122: Lastly I attempt to plot. I saw in an example that the .plot method is available from a subplotbase. Here I try something very simple, just three numbers.

THE OUTCOME:

The axes never rendered and the plot never appeared. I really don’t know why or how to troubleshoot this. Does anybody have an idea why?

thx

Matt

I would look at line 24/25. You are constructing a MyStaticMplCanvas instance on 24, with a self.main_widget as the parent. But then on 25, you explicitly call the constructor again (which is not a good idea), but with the main window as the parent (the self argument). I bet that is throwing off a couple things.

The code is extremely hard to follow, and I think it is a bad example to build off of in the first place (unnescessary subclassing). Perhaps a different example would be more suitable? What programming language are you coming from?

Ben Root

···

On Friday, December 5, 2014 4:29 PM, Benjamin Root <ben.root@…553…> wrote:

On Fri, Dec 5, 2014 at 4:12 PM, Matthew Albert <matthewa927@…42…> wrote:

I’m sure this is a simple problem, but I’ve been going around in circles several days trying to figure this out.

Here’s my code.

http://pastebin.com/n83dGhG4

Basically, I’m trying to get my pyqt4 button signal to execute the plot command (line 122). A lot of this code was copied from the matplotlib example page. If I uncomment line 148, the figure will successfully plot. I don’t understand why what I’m doing on line 122 isn’t equivalent to line 148.

thx for your help.

Matt


Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server

from Actuate! Instantly Supercharge Your Business Reports and Dashboards

with Interactivity, Sharing, Native Excel Exports, App Integration & more

Get technology previously reserved for billion-dollar corporations, FREE

http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel