Having a DF of predicted (column) an actual (column) values. I would like to plot an overlaid histogram that have the same look as when using the hue property. I couldn't find a way of doing so without reconstructing my original data.
Here is an example of what I'm trying to do:
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>
Q: How can I get similar results without manipulating my original DF?
Unless I am misunderstanding what you're asking.
From the docs:
If neither
x
nory
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)