SeaBorn - 根据列选择色调

SeaBorn - choosing hue based on column

具有预测(列)值和实际(列)值的 DF。我想绘制一个叠加的直方图,它与使用色调 属性 时的外观相同。如果不重建我的原始数据,我找不到这样做的方法。

这是我正在尝试做的一个例子:

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

If neither x nor y is assigned, the dataset is treated as wide-form, and a histogram is drawn for each numeric column

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)