Hi,

I have attached a small example displaying a simple plot in a PyQt based widget. If you start resizing the widget manually, the labels of the axes as well as the title disappear from the plot window even for moderately small window sizes.

Any suggestions on how I can fix this?

Best regards,

Mads

--
+-----------------------------------------------------+
| Mads Ipsen                                          |
+----------------------+------------------------------+
| Gåsebæksvej 7, 4. tv |                              |
| DK-2500 Valby        | phone:          +45-29716388 |
| Denmark              | email:  mads.ip...@gmail.com |
+----------------------+------------------------------+


import sys

from PyQt4 import QtGui

from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg
import matplotlib.backends.qt4_editor.figureoptions as figureoptions

class Plot2D(QtGui.QWidget):
    """
       2D Plot class based on a matplotlib canvas.
    """
    def __init__(self, parent=None, testing=False):
        # Initialize base class
        QtGui.QWidget.__init__(self, parent)

        # Set a layout
        layout = QtGui.QVBoxLayout()
        self.setLayout(layout)

        # Widget to hold the canvas
        self._plot_widget = QtGui.QWidget()

        # Set up figure
        self._figure = Figure()
        self._canvas = FigureCanvasQTAgg(self._figure)
        self._canvas.setParent(self._plot_widget)

        # Add widgets to the layout
        layout.addWidget(self._canvas)

        # Draw somthing
        self.axes = self._figure.add_subplot(111)
        self.draw()

    def draw(self):
        """
           Redraws a figure. Added for unit testing purposes but may also be used for inspiration
           on how to make a plot.
        """
        import numpy

        str = '1 2 3 4'
        data = map(int, str.split())

        x = range(len(data))

        # clear the axes and redraw the plot anew
        self.axes.clear()

        self.axes.bar(
            left=x,
            height=data,
            width=8.0/ 100.0,
            align='center',
            alpha=0.44,
            picker=5)

        t = numpy.arange(0.0, 3.0, 0.01)
        s = numpy.sin(2*numpy.pi*t)
        self.axes.plot(t, s, picker=5)
        self.axes.set_title('This is a title')
        self.axes.set_xlabel('Clock is ticking')
        self.axes.set_ylabel('Time is running')

        self._canvas.draw()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    widget = Plot2D()
    widget.show()

    sys.exit(app.exec_())
# qApp = QtGui.QApplication(sys.argv)

# aw = ApplicationWindow()
# aw.setWindowTitle("%s" % progname)
# aw.show()
# sys.exit(qApp.exec_())
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to