具有预测(列)和实际(列)值的 DF。我想绘制一个与使用 hue 属性时外观相同的叠加直方图。如果不重建我的原始数据,我找不到这样做的方法。
这是我正在尝试做的一个例子:
df = pd.DataFrame({'A':np.random.uniform(low=0.0, high=9.0, size=(150,)),'P':np.random.uniform(low=0.0, high=9.0, size=(150,))})
actual = df.A.to_frame()
predicted = df.P.to_frame()
print(df.head())
actual.columns = ['value']
actual['t'] = 'A'
predicted.columns = ['value']
predicted['t'] = 'P'
tmp = pd.concat([actual,predicted])
print(tmp.head())
sns.histplot(data=tmp,x='value' ,hue="t")
Output:
Original DF
A P
0 2.546046 2.503833
1 4.797077 2.306720
2 1.358222 4.839675
3 7.063206 8.828486
4 3.010978 7.406337
Manipulated DF
value t
0 2.546046 A
1 4.797077 A
2 1.358222 A
3 7.063206 A
4 3.010978 A
<matplotlib.axes._subplots.AxesSubplot at 0x7fd657112fd0>
问: 我如何在不操纵我的原始 DF 的情况下得到类似的结果?
除非我误解了你的要求。
来自docs:
如果
和x
都没有赋值,则数据集被视为宽格式,并为每个数字列绘制直方图y
df = pd.DataFrame(
{
"A": np.random.uniform(low=0.0, high=9.0, size=(150,)),
"P": np.random.uniform(low=0.0, high=9.0, size=(150,)),
}
)
ax = sns.histplot(df)