安德鲁';s曲线:调用Python对象时超出了最大递归深度
我试图让Andrew的曲线使用以下代码:安德鲁';s曲线:调用Python对象时超出了最大递归深度,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,我试图让Andrew的曲线使用以下代码: import pandas as pd from pandas.plotting import andrews_curves def andrews_curves(df, class_column, normalize = False): plt.style.use("ggplot") plt.figure() andrews_curves(df, class_column) plt.draw() andrews_
import pandas as pd
from pandas.plotting import andrews_curves
def andrews_curves(df, class_column, normalize = False):
plt.style.use("ggplot")
plt.figure()
andrews_curves(df, class_column)
plt.draw()
andrews_curves(players, "RANK")
plt.show()
其中players
是我的数据帧。它放弃了警告:
More than 20 figures have been opened
然后:
RecursionError: maximum recursion depth exceeded while calling a Python object
这只发生在Andrew的曲线上,因为平行坐标在几乎相同的代码下工作良好:
def parallel_coords(df, class_column):
plt.style.use("ggplot")
plt.figure()
parallel_coordinates(df, class_column = class_column, cols = list(df), alpha = 0.4)
plt.draw()
parallel_coords(players, "RANK")
plt.show()
我曾尝试使用
clear('all')
、clf()
和cla()
方法,但它们都没有效果。您需要在代码中重命名函数andrews\u curves
似乎您要做的是在自己的andrews\u curves
函数中调用pandas.plotting.andrews\u curves
问题是,一旦定义andrews_曲线,它就会替换同名的另一个对象,因此调用函数的效果是它递归地调用自己,直到达到pythons递归极限:
这不会影响并行协调,因为您在其中调用的函数具有不同的名称
简而言之,将andrews_曲线函数重命名为其他函数:
def plot_andrews_curves(df, class_column, normalize = False):
plt.style.use("ggplot")
plt.figure()
andrews_curves(df, class_column)
plt.draw()
你就不会有这个问题了