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
>
添加回答
舉報
0/150
提交
取消