无法获得图/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:3:MatplotlibDeprecationWarning:

时间:2020-09-19 12:38:44

标签: python matplotlib

        date    high    low     close   Central      Bottom Top_Central Resistance_1    Support_1   Central_SMA Bottom_Central_SMA  Top_Central_SMA
1   2010-01-05  142.45  136.00  141.85  140.100000  139.225 140.975000      NaN       NaN          NaN  NaN NaN
2   2010-01-06  142.70  140.40  141.00  141.366667  141.550 141.183333  143.266667  138.891667  140.733333  140.3875    141.079167
3   2010-01-07  142.65  140.05  141.60  141.433333  141.350 141.516667  142.575000  140.125000  141.400000  141.4500    141.350000
4   2010-01-08  142.40  139.85  141.90  141.383333  141.125 141.641667  142.866667  140.291667  141.408333  141.2375    141.579167
5   2010-01-11  146.00  141.95  145.35  144.433333  143.975 144.891667  144.916667  141.616667  142.908333  142.5500    143.266667

在我的代码中,上面的数据框是数据透视表。

import matplotlib.dates as mdates
from matplotlib.dates import date2num
import matplotlib.pyplot as plt
Graph=pivot.copy()# Make a copy of pivot
try:
    Graph.reset_index(inplace=True)
    Graph['date'] = Graph['date'].apply(date2num)
except:
    pass
fig= plt.figure()
ax1= fig.add_subplot(111)
ax2= fig.add_subplot(111)
ax3= fig.add_subplot(111)

ax1.xaxis_date()
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
ax2.plot(Graph.date, Graph['Resistance_1'], label='R1')
ax3.plot(Graph.date, Graph['Support_1'], label='S1')

plt.show()

运行上面的代码时,出现以下错误。

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:3:MatplotlibDeprecationWarning:

使用与先前轴相同的参数添加轴当前会重用较早的实例。在将来的版本中,将始终创建并返回一个新实例。同时,通过向每个轴实例传递唯一的标签,可以抑制此警告,并确保将来的行为。

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:4:MatplotlibDeprecationWarning:

使用与先前轴相同的参数添加轴当前会重用较早的实例。在将来的版本中,将始终创建并返回一个新实例。同时,通过向每个轴实例传递唯一的标签,可以抑制此警告,并确保将来的行为。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

使用与当前先前轴相同的参数添加轴 重用以前的实例。

相同的参数在这里的意思是“ 111”:

ax2= fig.add_subplot(111)
ax3= fig.add_subplot(111)

该行为在警告消息中指定:它不添加新图形,而是重用旧图形。因此,即使您可能想指定3,您也只有1个数字。我假设您需要查找子图的语法,并将其误认为不是。一种正确的使用方式是:

ax1= fig.add_subplot(131)
ax2= fig.add_subplot(132)
ax2.plot(a,b)
ax3= fig.add_subplot(133)
ax3.plot(b,a)

如果您想要3行图像,也可以使用31倍。

相关问题