Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用FigureCanvasQTAgg时的不同数据帧打印行为_Python_Matplotlib_Pandas_Pyqt_Pyqt4 - Fatal编程技术网

Python 使用FigureCanvasQTAgg时的不同数据帧打印行为

Python 使用FigureCanvasQTAgg时的不同数据帧打印行为,python,matplotlib,pandas,pyqt,pyqt4,Python,Matplotlib,Pandas,Pyqt,Pyqt4,我试图创建包含在熊猫数据框中的几个数据系列的绘图。让我们以df为例: import pandas as pd import matplotlib.pyplot as plt d = {'1': [1,2,3], '2': [1,4,9]} df = pd.DataFrame(d) df.plot() plt.show() 此代码生成一个包含两个不同数据系列的简单折线图: 但是,如果我尝试使用FigureCanvasQTAgg在PyQt小部件中创建相同的绘图,我只得到一行。第二个示例的代码更

我试图创建包含在熊猫数据框中的几个数据系列的绘图。让我们以
df
为例:

import pandas as pd
import matplotlib.pyplot as plt

d = {'1': [1,2,3], '2': [1,4,9]}
df = pd.DataFrame(d)
df.plot()
plt.show()
此代码生成一个包含两个不同数据系列的简单折线图:

但是,如果我尝试使用
FigureCanvasQTAgg
在PyQt小部件中创建相同的绘图,我只得到一行。第二个示例的代码更复杂一些:

import pandas as pd
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PyQt4.QtGui import QWidget, QSizePolicy, QApplication

class DisplayWidget( QWidget ):
    def __init__(self, parent=None):
        super( DisplayWidget, self).__init__( parent )

        self.initUI()

        d = {'1': [1,2,3], '2': [1,4,9]}        
        self.df = pd.DataFrame(d)
        self.canvas.plot_data_frame(self.df)

    def initUI(self):

        self.canvas = PlotCanvas(self)

class PlotCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        self.fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = self.fig.add_subplot(111)
        self.axes.hold(False)

        FigureCanvas.__init__(self, self.fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self,
                                   QSizePolicy.Expanding,
                                   QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)


    def plot_data_frame( self, df, **kwargs ):
        df.plot( ax = self.axes, **kwargs )
        self.draw()        

if __name__ == "__main__":

    app = QApplication( [] )
    widget = DisplayWidget()
    widget.show()
    app.exec_()
运行此代码时,输出如下所示:

如果有人能解释这一点,我们将不胜感激

谢谢。

删除此行:

self.axes.hold(False)

谢谢你知道我如何删除这些系列,留下一个空白的绘图吗?我尝试了
self.axes.cla()
但是这没有任何作用…调用
self.axes.cla()
然后
self.fig.canvas.draw()