cannot display label on my axes

Hello,
It's my first post on this forum and I'm very happy to discover a forum dedicated to matplotlib. I 've begun recently a development with matplotlib inside my python (2.7)application.
In a first step I've developped a stand alone graphical display and it runs properly. In a second step, I try to manage this graphical display through gtk (because my main application is in python/gtk) : now, most of functionalities run well, but labels on my 3 axes are no more displayed and I don't understand why.
Thank you for all suggestions.

Here is the source code with gtk

···

-----------------------------------------------------------------------------------------------------------------
import sys
import gtk
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar
from StringIO import StringIO # StringIO behaves like a file object
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import colorConverter
from matplotlib.widgets import Button
    
class SectorDisplay2__:
  """
  Display view of sectors and volumes
  """
  def __init__(self):
          win = gtk.Window()
    win.connect("destroy",self.SectorDisplayClosePanel)
    win.set_default_size(800,800)
    vbox = gtk.VBox()
    win.add(vbox)
    
    fig = Figure()
    canvas = FigureCanvas(fig) # a gtk.DrawingArea
    ax = Axes3D(fig)

    #get lines as csv description
    line = ""
    line = line+"VOL1;P4120;0;999;-49.68722222222222;-1.52166666666667;\n"
    line = line+"VOL1;P4121;0;999;-49.68722222222222;-2.20722222222222;\n"
    line = line+"VOL1;P1421;0;999;-49.23750000000000;-2.20722222222222;\n"
    line = line+"VOL1;P1422;0;999;-49.23750000000000;-1.52166666666667;\n"
    line = line+"VOL1;P4120;0;999;-49.68722222222222;-1.52166666666667;\n"
    lines = StringIO(line)
    
    # get the list of point coordinates and level
    data = np.loadtxt(lines,
                      delimiter=';',
                       usecols = (0,1,2,3,4,5), # 0=volume 1=point 2=lower level 3=upper_level, 4=lat 5=long
                      dtype = np.dtype({'names':['volume','point','lower','upper','lat','long'],
                                'formats': ['S20','S5','i4','i4','f4','f4']}) )

    # Get one particular volume
    onevolume = data[data['volume']=="VOL1"]
    ax.plot(onevolume['long'],onevolume['lat'],onevolume['upper'])
    ax.plot(onevolume['long'],onevolume['lat'],onevolume['lower'])

    for i in range(len(onevolume)-1):
      ax.plot([onevolume['long'][i],onevolume['long'][i]],
        [onevolume['lat'][i],onevolume['lat'][i]],
        [onevolume['lower'][i],onevolume['upper'][i]])

    ax.set_ylabel('Latitude (deg)')
    ax.set_xlabel('Longitude (deg)')
    ax.set_zlabel('Level (100xfeet)')
    ax.set_title('Volumic definition')
    vbox.pack_start(canvas)
    toolbar = NavigationToolbar(canvas,win)
    vbox.pack_start(toolbar,False,False)
    win.show_all()
    
    # Run the Gtk mainloop
    gtk.main()
    
  def SectorDisplayClosePanel(self,caller):
    gtk.main_quit()

if __name__ == '__main__':
  SectorDisplay2__()
-------------------------------------------------------------------------------------
Here is the initial source code without gtk:
-------------------------------------------------------------------------------------
import sys
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar
from StringIO import StringIO # StringIO behaves like a file object
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import colorConverter
from matplotlib.widgets import Button
    
class SectorDisplay2__:
  """
  Display view of sectors and volumes
  """
  def __init__(self):
    """
    @param parentWin: Window which is parent of this window
    @type parentWin: Widget
    @param typevol: give the type of volume : volume, sector, non controlled area ...
    @type typevol: str
                @param entity_name: entity to display
                @type entity_name: str
                @type application: <Application__>
                @param application: instance of class Application__
    @param class_creation: indicates a class creation and not only a call to Class__.__init__
    @type class_creation: boolean
    """
    fig = plt.figure()
    
    ax = Axes3D(fig)
    #get lines as csv description
    line = ""
    line = line+"VOL1;P4120;0;999;-49.68722222222222;-1.52166666666667;\n"
    line = line+"VOL1;P4121;0;999;-49.68722222222222;-2.20722222222222;\n"
    line = line+"VOL1;P1421;0;999;-49.23750000000000;-2.20722222222222;\n"
    line = line+"VOL1;P1422;0;999;-49.23750000000000;-1.52166666666667;\n"
    line = line+"VOL1;P4120;0;999;-49.68722222222222;-1.52166666666667;\n"
    lines = StringIO(line)
    
    # get the list of point coordinates and level
    data = np.loadtxt(lines,
                      delimiter=';',
                       usecols = (0,1,2,3,4,5), # 0=volume 1=point 2=lower level 3=upper_level, 4=lat 5=long
                      dtype = np.dtype({'names':['volume','point','lower','upper','lat','long'],
                                'formats': ['S20','S5','i4','i4','f4','f4']}) )

    # Get one particular volume
    onevolume = data[data['volume']=="VOL1"]
    ax.plot(onevolume['long'],onevolume['lat'],onevolume['upper'])
    ax.plot(onevolume['long'],onevolume['lat'],onevolume['lower'])

    for i in range(len(onevolume)-1):
      ax.plot([onevolume['long'][i],onevolume['long'][i]],
        [onevolume['lat'][i],onevolume['lat'][i]],
        [onevolume['lower'][i],onevolume['upper'][i]])

    ax.set_ylabel('Latitude (deg)')
    ax.set_xlabel('Longitude (deg)')
    ax.set_zlabel('Level (100xfeet)')
    ax.set_title('Volumic definition')
    plt.show()
    
  def SectorDisplayClosePanel(self,caller):
    plt.close()

if __name__ == '__main__':
  SectorDisplay2__()
-------------------------------------------------------------------------------------

WALTER Alain, on 2011-08-11 11:31, wrote:

Hello,
It's my first post on this forum and I'm very happy to discover a forum dedicated to matplotlib. I 've begun recently a development with matplotlib inside my python (2.7)application.
In a first step I've developped a stand alone graphical display and it runs properly. In a second step, I try to manage this graphical display through gtk (because my main application is in python/gtk) : now, most of functionalities run well, but labels on my 3 axes are no more displayed and I don't understand why.
Thank you for all suggestions.

Here is the source code with gtk
...
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
...

Hi there,

glad you found us! I haven't looked closely, but I know there are
limitations to what the gtk backend can render without using Agg
(I recall a message on this list about rotated text not working,
due to the interface to GTK we were using) so perhaps you ran
into this.

Can you try the gtkagg backend?

best,

···

--
Paul Ivanov
314 address only used for lists, off-list direct email at:
http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7