Python 熊猫群居图给出第一个图两次

Python 熊猫群居图给出第一个图两次,python,pandas,plot,Python,Pandas,Plot,我有一个包含多个类别的数据框,我想使用groupby分别绘制每个类别。但是,第一个类别(或第一个绘图)始终绘制两次 例如: import pandas as pd import numpy as np import matplotlib.pyplot as plt n = 100000 x = np.random.standard_normal(n) y1 = 2.0 + 3.0 * x + 4.0 * np.random.standard_n

我有一个包含多个类别的数据框,我想使用
groupby
分别绘制每个类别。但是,第一个类别(或第一个绘图)始终绘制两次

例如:

    import pandas as pd
    import numpy as np 
    import matplotlib.pyplot as plt

    n = 100000
    x = np.random.standard_normal(n)
    y1 = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
    y2 = 1.0 + 5.0 * x + 2.0 * np.random.standard_normal(n)

    df1 = pd.DataFrame({"A": x,
                        "B": y1})

    df2 =  pd.DataFrame({"A": x,
                         "B": y2})

    df1["Cat"] = "Cat1"
    df2["Cat"] = "Cat2"

    df = df1.append(df2, ignore_index=True)

    df.groupby("Cat").plot.hexbin(x="A", y="B",cmap = "jet")
    plt.show()
这将给我三个绘图,其中Cat1绘图两次


我只想要两个情节。我做错了什么?

这是预期行为,请参阅中的警告:

警告:在当前实现中,对第一个组应用func调用两次,以确定它可以采用快速还是慢速代码路径。如果func有副作用,这可能会导致意外行为,因为它们会对第一组产生两次效果


在您的例子中,plot函数被调用了两次,这在结果中是可见的。

这可能与
apply
tweep实现有关:,为了解决这个问题,我将获得各个组,并迭代这些组并绘制它们OK,非常感谢!我本来打算避免对组进行迭代,但如果这是正常行为,那么就没关系了