python - 在 GROUPED 密度图中概括平均线的 y 轴限制

我有这个数据框:


df = pd.DataFrame({"X": np.random.randint(50,53,size=100),

             "Y": np.random.randint(200,300,size=100),

             "Z": np.random.randint(400,800,size=100),

             "Cat": np.random.choice(["Buy","Don't buy"], size=100)})

因为我有很多列(除了一列之外都是数字),我做了这个循环来做一个特定的情节:


for i in ["X", "Y", "Z"]:

    data = df.groupby("Cat")

    ax = data[i].plot(kind="kde")

    #ymin, ymax = ax.get_ylim() # Here is the error

    plt.vlines(x=data.mean()[data.mean().index == "Buy"][i],ymin=0, ymax=0.5, linestyles="dotted")

    plt.vlines(x=data.mean()[data.mean().index == "Don't buy"][i],ymin=0, ymax=0.5, linestyles="dotted")

    plt.show()

我需要获得每个密度图和分类组的最大 y 轴值,以便绘制每个图和每个分类组的平均 vlines。我试图从这里找到解决方案的解决方法。但它给了我错误'Series' object has no attribute 'get_ylim'。


有什么建议么?


编辑:


具体来说,每条密度曲线的 ymax 应该相同,因为每个图都有两条密度曲线。如果它们的颜色不同(例如与密度曲线的颜色相同)那就太棒了,但并非绝对必要。不同地块的 ymax 可能不同。


ibeautiful
浏览 125回答 1
1回答

慕村9548890

我需要获得每个密度图和分类组的最大 y 轴值for i in ["X", "Y", "Z"]:    data = df.groupby("Cat")    ax = data[i].plot(kind="kde")    ...ax是带有“购买”和“不购买”轴的 Pandas 系列。> axCatBuy          AxesSubplot(0.125,0.11;0.775x0.77)Don't buy    AxesSubplot(0.125,0.11;0.775x0.77)Name: X, dtype: object您可以获得最大 y 限制> max(ax['Buy'].get_ylim())0.5447082895597888> max(ax["Don't buy"].get_ylim())0.5447082895597888或者得到限制。> import matplotlib as mpl> ax.apply(mpl.axes.Axes.get_ylim)CatBuy          (-0.026485399247623134, 0.556196332564079)Don't buy    (-0.026485399247623134, 0.556196332564079)Name: Z, dtype: object> 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python