gpt4 book ai didi

python - 使用 FigureCanvasQTAgg 时不同的 DataFrame 绘图行为

转载 作者:行者123 更新时间:2023-11-28 21:54:08 24 4
gpt4 key购买 nike

我正在尝试创建包含在 pandas DataFrame 中的多个数据系列的图。让我们以 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()

此代码生成一个包含两个不同数据系列的简单折线图:

plot of two lines

但是,如果我尝试使用 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_()

当我运行这段代码时,输​​出如下所示:

plot of one line

如果有人能阐明这一点,我们将不胜感激!

谢谢。

最佳答案

删除这一行:

self.axes.hold(False)

关于python - 使用 FigureCanvasQTAgg 时不同的 DataFrame 绘图行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com