无法解压不可迭代的 AxesSubplot 对象 - Matplotlib
Cannot unpack non-iterable AxesSubplot object- Matplotlib
我正在 python 中创建一个函数,它允许我创建两个平行图并且它们共享它们的 2 个轴:
def PlotManager(data1,data2,fig):
f, (ax1, ax2) = fig.subplots(2, 1, sharey=True,sharex=True)
#Plot1 sopra
x_axis = data1.index
#Plot and shade the area between the upperband and the lower band grey
ax1.fill_between(x_axis,data1['Upper'],data1['Lower'], color = 'grey', alpha= 0.5)
#Plot the closing price and the moving average
ax1.plot(x_axis,data1['Close'],color = 'gold',lw = 3,label = 'Close Price', alpha= 0.5)
ax1.plot(x_axis,data1['SMA'],color = 'blue',lw = 3,label = 'Simple Moving Average', alpha= 0.5)
ax1.scatter(x_axis,data1['Buy'],color="green", lw=3,label="Buy",marker = "^", alpha=1)
ax1.scatter(x_axis,data1['Sell'],color="red", lw=3,label="Sell",marker = "v", alpha = 1)
#Set the title and show the image
ax1.set_title("Bollinger Band for Amazon")
plt.xticks(rotation = 45)
#Plot 2 Sotto
ax2.set_title('RSI_Plot')
ax2.plot(x_axis,data2['RSI'])
ax2.axhline(0,linestyle='--',alpha=0.5, color="grey")
ax2.axhline(10,linestyle='--',alpha=0.5, color="orange")
ax2.axhline(20,linestyle='--',alpha=0.5, color="green")
ax2.axhline(30,linestyle='--',alpha=0.5, color="red")
ax2.axhline(70,linestyle='--',alpha=0.5, color="red")
ax2.axhline(80,linestyle='--',alpha=0.5, color="green")
ax2.axhline(90,linestyle='--',alpha=0.5, color="orange")
ax2.axhline(100,linestyle='--',alpha=0.5, color="grey")
但是给我 cannot unpack non-iterable AxesSubplot object
错误:
[Command: python -u C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\GUIprova2.py]
C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\BollingerBandsFinal.py:63: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
ax = f.add_subplot(111)
C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\BollingerBandsFinal.py:63: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
ax = f.add_subplot(111)
Traceback (most recent call last):
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\cbook\__init__.py", line 196, in process
func(*args, **kwargs)
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 951, in _start
self._init_draw()
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1743, in _init_draw
self._draw_frame(next(self.new_frame_seq()))
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1766, in _draw_frame
self._drawn_artists = self._func(framedata, *self._args)
File "C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\GUIprova2.py", line 48, in animate
PlotManager(BollingerBands(df,f),RSI(df,f2),f)
File "C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\mostraGrafici.py", line 7, in PlotManager
f, (ax1, ax2) = fig.subplots(2, 1, sharey=True,sharex=True)
TypeError: cannot unpack non-iterable AxesSubplot object
我该如何处理这个错误?
plt.subplots(2, 1, ...)
的值是一个元组 figure, array(subplot0, subplot1)
以便您可以正确解包为一个图形和两个子图。
相反,fig.subplots(2, 1, ...)
的值是 subplot0, subplot1
(因为你已经有了数字......)当你尝试解压时,它等同于
f = subplot0
ax0, ax1 = subplot1
这导致 TypeError: cannot unpack non-iterable AxesSubplot object
因为你在下面没有使用标记为f
的对象,所以你应该写
ax1, ax2 = fig.subplots(2, 1, sharey=True,sharex=True)
我正在 python 中创建一个函数,它允许我创建两个平行图并且它们共享它们的 2 个轴:
def PlotManager(data1,data2,fig):
f, (ax1, ax2) = fig.subplots(2, 1, sharey=True,sharex=True)
#Plot1 sopra
x_axis = data1.index
#Plot and shade the area between the upperband and the lower band grey
ax1.fill_between(x_axis,data1['Upper'],data1['Lower'], color = 'grey', alpha= 0.5)
#Plot the closing price and the moving average
ax1.plot(x_axis,data1['Close'],color = 'gold',lw = 3,label = 'Close Price', alpha= 0.5)
ax1.plot(x_axis,data1['SMA'],color = 'blue',lw = 3,label = 'Simple Moving Average', alpha= 0.5)
ax1.scatter(x_axis,data1['Buy'],color="green", lw=3,label="Buy",marker = "^", alpha=1)
ax1.scatter(x_axis,data1['Sell'],color="red", lw=3,label="Sell",marker = "v", alpha = 1)
#Set the title and show the image
ax1.set_title("Bollinger Band for Amazon")
plt.xticks(rotation = 45)
#Plot 2 Sotto
ax2.set_title('RSI_Plot')
ax2.plot(x_axis,data2['RSI'])
ax2.axhline(0,linestyle='--',alpha=0.5, color="grey")
ax2.axhline(10,linestyle='--',alpha=0.5, color="orange")
ax2.axhline(20,linestyle='--',alpha=0.5, color="green")
ax2.axhline(30,linestyle='--',alpha=0.5, color="red")
ax2.axhline(70,linestyle='--',alpha=0.5, color="red")
ax2.axhline(80,linestyle='--',alpha=0.5, color="green")
ax2.axhline(90,linestyle='--',alpha=0.5, color="orange")
ax2.axhline(100,linestyle='--',alpha=0.5, color="grey")
但是给我 cannot unpack non-iterable AxesSubplot object
错误:
[Command: python -u C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\GUIprova2.py]
C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\BollingerBandsFinal.py:63: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
ax = f.add_subplot(111)
C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\BollingerBandsFinal.py:63: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
ax = f.add_subplot(111)
Traceback (most recent call last):
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\cbook\__init__.py", line 196, in process
func(*args, **kwargs)
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 951, in _start
self._init_draw()
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1743, in _init_draw
self._draw_frame(next(self.new_frame_seq()))
File "C:\Users\Nicolò\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1766, in _draw_frame
self._drawn_artists = self._func(framedata, *self._args)
File "C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\GUIprova2.py", line 48, in animate
PlotManager(BollingerBands(df,f),RSI(df,f2),f)
File "C:\Users\Nicolò\Documents\Git\ProgettoTradingBot\ProgettoTradeBot\mostraGrafici.py", line 7, in PlotManager
f, (ax1, ax2) = fig.subplots(2, 1, sharey=True,sharex=True)
TypeError: cannot unpack non-iterable AxesSubplot object
我该如何处理这个错误?
plt.subplots(2, 1, ...)
的值是一个元组 figure, array(subplot0, subplot1)
以便您可以正确解包为一个图形和两个子图。
相反,fig.subplots(2, 1, ...)
的值是 subplot0, subplot1
(因为你已经有了数字......)当你尝试解压时,它等同于
f = subplot0
ax0, ax1 = subplot1
这导致 TypeError: cannot unpack non-iterable AxesSubplot object
因为你在下面没有使用标记为f
的对象,所以你应该写
ax1, ax2 = fig.subplots(2, 1, sharey=True,sharex=True)