Hi Benjamin and others:
Thx for your comments. I’ve tried to follow your recommendations and simplify the code:
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 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?
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?
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.
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.
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
Matplotlib-devel mailing list