Ben*_*Ben 2 python pyqt matplotlib pyqt4 pandas
我正在尝试创建一个包含在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()
Run Code Online (Sandbox Code Playgroud)
此代码生成一个包含两个不同数据系列的简单折线图:

但是,如果我尝试使用PyQt小部件创建相同的绘图FigureCanvasQTAgg,我只会得到一行.我的第二个例子的代码更多涉及:
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_()
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,输出如下所示:

如果有人能够对此有所了解,那将非常感激!
谢谢.
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |