我正在尝试使用Seaborn绘制Pandas DataFrame的内容,但是我一生都无法弄清楚如何堆叠distplot。我拥有的DataFrame看起来像这样(简化)。
Image | Obj1 | Obj2 | ... | ObjN
-----------------------------------
img1.jpg | 2 | 1 | ... | 0
-----------------------------------
img2.jpg | 5 | 5 | ... | 5
-----------------------------------
img3.jpg | 9 | 0 | ... | 1
现在,我要做的是绘制整个图像集中N个对象的分布。这样,我想看看其中有多少图像包含Obj1,有多少图像具有Obj2 int,等等。这是纯粹的可视化操作,因此请不要考虑这可能不是显示所述数据的最佳方法。
本质上,我想做的事情是这样的:
for column in df.column:
sns.distplot(column) # Stack these distributions together with different colors
plt.show() # Display one plot with N-distribution plots inside
希望得到类似以下内容的输出:Example plot
基于@con_u的答案,我生成了以下图:
No Zoom Zoomed In on the Origin
尽管在图1中可以看到竖线,但它们相当无用。我知道分布严重偏向较低的数字(计数),所以也许我不走运,需要重新考虑我的绘图选项
答案 0 :(得分:0)
这对我有用。
# ----------------------------------------------------------------------
# Import library
# ----------------------------------------------------------------------
import numpy as np
import pandas as pd
import seaborn as sns
import random
# ----------------------------------------------------------------------
# Create an artificial dataframe
# ----------------------------------------------------------------------
df = pd.DataFrame({'image':np.arange(100) + 1,
'obj1':np.random.randint(low=1, high=100, size=100),
'obj2':np.random.randint(low=1, high=100, size=100),
'obj3':np.random.randint(low=1, high=100, size=100),
'obj4':np.random.randint(low=1, high=100, size=100)})
df = df.set_index('image')
df.head(10)
# ----------------------------------------------------------------------
# Plot the distributions (column-wise) (if you just want some columns)
# ----------------------------------------------------------------------
sns.distplot(df[['obj1']], hist=False, rug=True)
sns.distplot(df[['obj2']], hist=False, rug=True)
sns.distplot(df[['obj3']], hist=False, rug=True)
sns.distplot(df[['obj4']], hist=False, rug=True)
sns.plt.show()
# ----------------------------------------------------------------------
# Plot the distributions (column-wise) (looping method)
# ----------------------------------------------------------------------
for col in df.columns:
sns.distplot(df[[col]], hist=False, rug=True)
您可能还需要在此处检查相关内容: