From: Thomas B. <tho...@ya...> - 2004-08-18 15:43:52
|
John, Many thanks for your reply. I had seen the interactive.html page before but I didn't realize I had to drop the "show()" statement in order to accomplish interactivity. Iow, I had set my matplotlibc file to have interactive be true, but when I wrote scripts, I kept on using the "show()" command. Oops. Tks for clearing that up. Btw, what does "TkAgg sets interactive mode to True when you issue the show command" mean exactly? Should it say False instead? Anyway, I kept using "show()" in my scripts, which "hid" interactivity from me. I got that now. My explanation of what I meant by displaying data in grid-like tables was not good. Pls let me try again. Your example is v informative and useful, but it doesn't get at what I had in mind. I did not mean displaying multiple charts in one window in a grid-like orientation. By displaying the data set in a grid-like table, I want to see the underlying numerical data (ie, the actualy numbers) displayed in a grid window. Perhaps I can better explain what I mean by continuing with your example. When I run it, upon entering the line that reads "hist(randn(10000), 100) # lower right", my python prompt prints out the following: >>> hist(randn(10000), 100) # lower right (array([ 3, 0, 3, 5, 4, 10, 3, 5, 11, 2, 17, 9, 7, 17, 24, 31, 29, 38, 42, 36, 53, 57, 70, 79, 78, 84, 105, 103, 132, 158, 141, 164, 177, 172, 181, 217, 223, 243, 254, 258, 286, 276, 279, 279, 300, 312, 333, 280, 305, 270, 278, 278, 273, 257, 239, 223, 204, 216, 216, 174, 169, 142, 136, 120, 118, 102, 89, 79, 69, 60, 48, 55, 42, 37, 27, 31, 30, 25, 14, 12, 19, 12, 10, 5, 2, 5, 2, 2, 2, 1, 1, 3, 2, 2, 1, 2, 0, 0, 0, 1]), array([-3.35781891 57051, -3.21132211, -3.13807372, -3.06482532, -2.99157693, -2.91832853, -2.84508014, -2.77183174, -2.69858334, -2.62533495, -2.55208655, -2.47883816, -2.40558976, -2.33234137, -2.25909297, -2.18584457, -2.11259618, -2.03934778, -1.96609939, -1.89285099, -1.8196026 , -1.7463542 , -1.6731058 , -1.59985741, -1.52660901, -1.45336062, -1.38011222, -1.30686383, -1.23361543, -1.16036703, -1.08711864, -1.01387024, -0.94062185, -0.86737345, -0.79412506, -0.72087666, -0.64762826, -0.57437987, -0.50113147, -0.42788308, -0.35463468, -0.28138629, -0.20813789, -0.13488949, -0.0616411 , 0.0116073 , 0.08485569, 0.15810409, 0.23135248, 0.30460088, 0.37784928, 0.45109767, 0.52434607, 0.59759446, 0.67084286, 0.74409125, 0.81733965, 0.89058805, 0.96383644, 1.03708484, 1.11033323, 1.18358163, 1.25683002, 1.33007842, 1.40332682, 1.47657521, 1.54982361, 1.623072 , 1.6963204 , 1.76956879, 1.84281719, 1.91606558, 1.98931398, 2.06256238, 2.13581077, 2.20905917, 2.28230756, 2.35555596, 2.42880435, 2.50205275, 2.57530115, 2.64854954, 2.72179794, 2.79504633, 2.86829473, 2.94154312, 3.01479152, 3.08803992, 3.16128831, 3.23453671, 3.3077851 , 3.3810335 , 3.45428189, 3.52753029, 3.60077869, 3.67402708, 3.74727548, 3.82052387, 3.89377227])... To me, that isnt a fun way to look at (or attempt to edit) the numbers in my data set. I think it would be much more useful to display the numbers such as those above in a separate window. What if I have 5,000 data observations? A scrollable data grid window would make a much nicer display. The picture at http://freshmeat.net/screenshots/36907/39220/ gives the basic idea of what I mean by a data grid (though what I need is much more basic than that picture). Wx has such a grid widget which can be used for displaying/editing data, which is what I was hoping to use. However, I am not sure if one should mix different gui's. Iow, if I use tkagg or gtk as my interactive matplotlib gui, can I also display and interact with wxpython grid widgets in the same script smoothly? Am I asking for trouble having the same script display interactive matplotlib charts using one gui type and then display these grid widgets using another gui type? Or should I just stick with one gui type throughout the entire script so that the interactive matplotlib charts use say gtk and the same script also uses gtk for its grid widgets? I hope that makes more sense. Thanks again, Tom -----Original Message----- From: John Hunter [mailto:jdh...@ac...] Sent: Tuesday, August 17, 2004 12:59 PM To: Thomas Barket Cc: mat...@li... Subject: Re: [Matplotlib-users] Requesting advice on multi-threaded matplotlib session + grids displaying data >>>>> "Thomas" == Thomas Barket <tho...@ya...> writes: Thomas> Hello, I am fairly new to matplotlib in particular and Thomas> using gui's in general and don't have much experience yet Thomas> with threading. From a python command prompt, I want to Thomas> be able to use python to create and work with data sets, Thomas> while simultaneously be able to chart the data with Thomas> matplotlib. Since I would like to display more than one Thomas> matplotlib chart at a time, I presume this involves Thomas> working with threads. Furthermore, I would like to also Thomas> display the data sets in a grid-like table, and since I Thomas> want to see more than one such grid-like table at a time Thomas> (and of course see grid-like tables and matplotlib charts Thomas> at the same time too), I think this will also involve Thomas> threading. Have you had a chance to read http://matplotlib.sourceforge.net/interactive.html? This gives a little background on using matplotlib interactively. As stated on that page, the best approach with the current matplotlib (0.61) is to set backend : TkAgg interactive : True in your matplotlibrc file (http://matplotlib.sourceforge.net/faq.html#MATPLOTLIBRC). If you do this, you will not need to call show. Fernando Perez, author of ipython, is working on a much improved interactive shell for matplotlib + GTK. He plans eventually to support all the backends, but right now is focusing on GTK (tkagg already works with ipython). You will need CVS ipython and CVS matplotlib to try this out, but it is very nice. See his earlier post http://sourceforge.net/mailarchive/forum.php?thread_id=5323260&forum_id=3340 5 As for the grids, if I understand you correctly, the best way to do this is create multiple axes with the subplot command, eg, from matplotlib.matlab import * subplot(221) # upper left plot(range(10), 'go') subplot(222) pcolor(rand(10,10)) # upper right subplot(223) scatter(rand(12), rand(12)) # lower left subplot(224) hist(randn(10000), 100) # lower right show() Is this what you are looking for? [You can embed multiple matplotlib figure canvases into a wx grid or a gtk.Table if you want to use the GUI API, but I'm assuming you're looking for something simpler, as above]. JDH |