为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2023-06-06 16:17:33
我有这个数据框: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 可能不同。
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

我需要获得每个密度图和分类组的最大 y 轴值


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

    data = df.groupby("Cat")

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

    ...

ax是带有“购买”和“不购买”轴的 Pandas 系列。


> ax

Cat

Buy          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)

Cat

Buy          (-0.026485399247623134, 0.556196332564079)

Don't buy    (-0.026485399247623134, 0.556196332564079)

Name: Z, dtype: object


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号