python - 无法在图中添加图例

标签 python qt canvas matplotlib qt-designer

我想为我的人物添加图例,但它没有显示。在下面的代码中,“forecast_canvas”是在 Qt Designer 中创建的 Canvas 类的实例。

    ax = self.forecast_canvas.figure.add_subplot(111)
    ax.plot(self.new,'--',label='observed')

    ax.plot(data,color='green',label='Forecast')
    self.forecast_canvas.draw()

这是我的 Canvas 的代码:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas 

import matplotlib.pyplot as plt from PyQt4 import QtGui 

class   Canvas(FigureCanvas):

     def __init__(self, parent=None):
         self.figure = plt.figure()     #plt.tight_layout(pad=4)
         FigureCanvas.__init__(self, self.figure)
         self.setParent(parent)
         FigureCanvas.setSizePolicy(self,
                                QtGui.QSizePolicy.Expanding,
                                QtGui.QSizePolicy.Expanding)
         FigureCanvas.updateGeometry(self)
         #plt.legend()

我尝试添加

plt.legend()

在 Canvas 类中,但它也不起作用。 enter image description here

最佳答案

我认为您有两个问题:

  1. 您需要在创建绘图之后添加图例。
  2. 您可能无法使用 pyplot (plt.legend()),因为 pyplot 可能不包含任何图形。 (我在这里说“可能”,因为我不知道完整的代码)
    无论如何,将图例绘制到特定的轴上会更安全;在这种情况下使用

    ax.legend()
    

关于python - 无法在图中添加图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677059/

相关文章:

python - 在python中查找大量列表的交集

Python游戏 handle 输入?

python - 在 opencv 中,我如何获得分段区域列表

c++ - QT并行编程

c++ - Q3DBars 仅在一个角上带有垂直标签,可能吗?

HTML5 Canvas : How can I check if a stroke is crossing an other stroke?

javascript - 使用jQuery模拟鼠标点击坐标

python - NetworkX add_nodes_from 无法按预期工作

javascript - Raphael 和集合内的目标节点

python - 中央小部件的 pyqt 设计器和布局