【发布时间】:2021-09-07 22:50:03
【问题描述】:
具有预测(列)和实际(列)值的 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 的情况下获得类似的结果?
【问题讨论】:
-
您也可以
melt将数据框从“宽格式”转换为“长格式”:sns.histplot(df.melt(), hue='variable', x='value', multiple='dodge')。请注意,seaborn 0.11.1multiple=不适用于宽格式数据帧。
标签: python seaborn data-science visualization