我希望将我的情节添加到pyqt ui
我正在使用大熊猫作为情节。
data= pandas.DataFrame(pandas.read_sql(sql, my_connection))
data[data['GENERAL_TYPE']=='phone'].pivot_table('CEID','CONTACTED_PERSON_NEW','RESULT', aggfunc='count').plot(kind='bar', stacked=True, figsize=(10,10))
data[data['GENERAL_TYPE']=='phone'].pivot_table(['CEID'],['CONTACTED_PERSON_NEW'],['DATA4_CAMP'], aggfunc='count').plot(kind='bar',figsize=(10,10), stacked=True)
data[data['GENERAL_TYPE']=='phone'].pivot_table(['CEID'],['CONTACTED_PERSON_NEW'], aggfunc='count').plot(kind='pie',subplots=True, legend=False, stacked=False, figsize=(10,10))
在此之后,我的情节很少:
我如何使用这个例子(How to embed matplotib in pyqt - for Dummies) 在一个窗口中将我的绘图添加到不同的布局?
答案 0 :(得分:0)
您提供的示例不会为我运行,另外它包含错误,如其中一条评论中所述。在PyQt中嵌入时,您无法使用plt.figure()
,因为这会启动自己的事件循环。您必须改为使用matplotlib.Figure()
。我强烈建议您将代码基于Matplotlib文档中的this example,而不是“for Dummies”的答案。
如果你在PyQt中有一个常规的Matplotlib图,你可以继续尝试一个Pandas图。我不太了解熊猫,但在我看来,Pandas默认情况下绘制到当前轴。嵌入PyQt时这不起作用; plt.figure()
设置当前轴,但我们必须使用matplotlib.Figure()
,因此没有当前轴。但是,我认为Pandas plot命令接受ax
关键字参数。这允许您传递自己的轴对象(在示例中使用self.axes = fig.add_subplot(111)
定义)
在Matplotlib示例中,您可以尝试替换
self.axes.plot(...)
使用您的Pandas plot命令并传递ax=self.axes
。像这样的东西
data[...].pivot_table(...).plot(ax=self.axes, ...)
如果这不起作用,我会问熊猫社区。我会添加一个标签。