hello,

I am working in Python with TkAgg. I have several plots that I would like to display on a single figure. The problem is, when I set the figure size to 12in wide, 6in high (which is perfect for my laptop) the plots get scrunched up. If I resize the window in which they're displayed then the plots scrunch up even further. So it appears to me that the figure size is tied to the window size.

I would like to set the size of the initial window in which the plots appear and then fix the size of the canvas? frame? figure? (not sure what I need to fix). I have created a scrollbar on the window to permit scrolling up and down.

I have attached the Navigation Toolbar to the bottom of the window, which is where I would like it to stay. So, the plots should scroll up and down with the toolbar fixed.

My small sample program is attached.

I am using Tk (as opposed to another GUI) as I am generating these plots from data in SimPy and am using SimGUI to control the model execution and plotting.

I would greatly appreciate any help!
Regards,
Bonnie Douglas


#!/usr/bin/env python
# menu-example-4.py
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt



import Tkinter as Tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, 
NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from numpy import arange, sin, pi
import sys

# create toplevel window
tl=Tk.Toplevel(height='6i')
tl.title("storage")
print 'done toplevel'

# create frame
frame=Tk.Frame(master=tl, bd=2)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
print 'frame done'

scroll = Tk.Scrollbar(frame)
scroll.grid(row=0, column=1, sticky=Tk.N+Tk.S)


# create figure
# this setting appears to control the toplevel window size as well!
# I want to set the toplevel window to 12in wide by 6 inches high
# I want to set the figure draw area to 12in wide by 18 inches high and
# let the scrollbar do the work.
# I want to keep the navigation toolbar positioned at the bottom of the 
toplevel window
fig=Figure(figsize=(12,6), dpi=100)

# create plots
a1 = fig.add_subplot(411)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a1.plot(t,s)

a2 = fig.add_subplot(412)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a2.plot(t,s)

a3 = fig.add_subplot(413)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a3.plot(t,s)

a4 = fig.add_subplot(414)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a4.plot(t,s)

# create canvas
canvas=FigureCanvasTkAgg(figure=fig, master=frame)
canvas.show()

c=canvas.get_tk_widget()

c.config(bd=0, scrollregion=(0, 0, 2000, 2000), yscrollcommand=scroll.set)
c.grid(row=0, column=0, sticky=Tk.N+Tk.S+Tk.E+Tk.W)

scroll.config(command=c.yview)

# problems with toolbar not showing solved by setting the master to
# the toplevel window, not the frame!!!
toolbar=NavigationToolbar2TkAgg(canvas, tl)
toolbar.update()
#

frame.pack()

Tk.mainloop()
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to