【发布时间】:2018-01-17 00:27:21
【问题描述】:
我想在这个图中显示框架。 我尝试运行下面的代码,但它没有工作:
ax = self.canvas.figure.add_subplot(111)
ax.spines['top'].set_visible(True)
ax.spines['right'].set_visible(True)
ax.spines['bottom'].set_visible(True)
ax.spines['left'].set_visible(True)
ax.plot(diff)
我也试过了:
plt.tight_layout()
但它会产生这个错误:
> File "runme.py", line 54, in autocorr_function
> plt.tight_layout() File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line
> 1406, in tight_layout
> fig.tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect) File "/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py",
> line 1753, in tight_layout
> rect=rect) File "/usr/local/lib/python2.7/dist-packages/matplotlib/tight_layout.py",
> line 326, in get_tight_layout_figure
> max_nrows = max(nrows_list) ValueError: max() arg is an empty sequence
您的帮助将不胜感激,谢谢。
编辑:这是画布的代码:
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)
【问题讨论】:
-
看起来你不是在一个孤立的 matplotlib 图内绘图,而是在某个 GUI 的画布内绘图。我们需要更多信息。 tight_layout 是一种在图形框架内拉伸轴的图形方法,它与边框无关。
-
我添加了画布的代码,希望它更清晰。
-
你需要画布做什么?为什么不只使用 plt.plot(...) 绘制它
-
我正在使用 Qt 作为 GUI,我需要一个画布来绘制图形。
标签: python pandas matplotlib time-series