如何使用两个不同长度的数据集绘制 seaborn 箱线图?
How do I draw seaborn boxplot with two data sets of different length?
我有两个数据集,NA和HG
len(NA)=267
NA = [73,49,53...]
len(HG)=176
(HG 与 NA 类似)
我想像这样将两个数据集绘制成一个图(我通过独立绘制它们得到了这个,然后通过 photoshop 修改图...我不能对另一个数据集做同样的事情,因为它们有不同的轴):
seaborn采用了numpy数组和panda dataframe形式的数据,都要求数组集合等长,我的例子不成立,因为HG有176个数据点,NA有267个.
目前,我所做的是将列表传输到 pandas 数据框,然后通过
绘制
HG = sns.boxplot(data=HG, width = 0.2)
我尝试了 HG = sns.boxplot(data=HG+NA, width = 0.2)
,但它返回了一个空白图,所以...请帮忙。
非常感谢!
下面创建了一个 DataFrame,其中缺失的 HG 值仅用 NaN 填充。箱线图忽略了这些。有很多方法可以生成具有最长列表长度的 DataFrame。下面显示的连接的替代方法是 itertools.zip_longest
或 pd.concat
,如@Kenan 所建议的。
NA = [73, 49, 53, 20, 20, 20, 20, 20, 20, 20, 20, 20]
HG = [73, 30, 60]
df = pd.Series(NA, name="NA").to_frame().join(pd.Series(HG, name="HG"))
sns.boxplot(data=df, width = 0.2)
或者您可能对使用 Holoviews 感兴趣,它以非常简单的方式为您提供完全交互式的绘图(当在带有散景后端的 Jupyter 中使用时)。对于您的案例,如下所示:
import holoviews as hv
NA = [73, 49, 53, 20, 20, 20, 20, 20, 20, 20, 20, 20]
HG = [73, 30, 60]
hv.BoxWhisker(NA, label="NA") * hv.BoxWhisker(HG, label="HG")
我假设 NA
和 HG
是自您绘制箱形图以来具有一列的数据框。所以你可以将它们连接成一个 df 然后绘制,大 df 会有 NaN 但 seaborn 会忽略那些
df = pd.concat([NA, HG], axis=1)
sns.plot(data=df)
我有两个数据集,NA和HG
len(NA)=267
NA = [73,49,53...]
len(HG)=176
(HG 与 NA 类似)
我想像这样将两个数据集绘制成一个图(我通过独立绘制它们得到了这个,然后通过 photoshop 修改图...我不能对另一个数据集做同样的事情,因为它们有不同的轴):
seaborn采用了numpy数组和panda dataframe形式的数据,都要求数组集合等长,我的例子不成立,因为HG有176个数据点,NA有267个.
目前,我所做的是将列表传输到 pandas 数据框,然后通过
绘制HG = sns.boxplot(data=HG, width = 0.2)
我尝试了 HG = sns.boxplot(data=HG+NA, width = 0.2)
,但它返回了一个空白图,所以...请帮忙。
非常感谢!
下面创建了一个 DataFrame,其中缺失的 HG 值仅用 NaN 填充。箱线图忽略了这些。有很多方法可以生成具有最长列表长度的 DataFrame。下面显示的连接的替代方法是 itertools.zip_longest
或 pd.concat
,如@Kenan 所建议的。
NA = [73, 49, 53, 20, 20, 20, 20, 20, 20, 20, 20, 20]
HG = [73, 30, 60]
df = pd.Series(NA, name="NA").to_frame().join(pd.Series(HG, name="HG"))
sns.boxplot(data=df, width = 0.2)
或者您可能对使用 Holoviews 感兴趣,它以非常简单的方式为您提供完全交互式的绘图(当在带有散景后端的 Jupyter 中使用时)。对于您的案例,如下所示:
import holoviews as hv
NA = [73, 49, 53, 20, 20, 20, 20, 20, 20, 20, 20, 20]
HG = [73, 30, 60]
hv.BoxWhisker(NA, label="NA") * hv.BoxWhisker(HG, label="HG")
我假设 NA
和 HG
是自您绘制箱形图以来具有一列的数据框。所以你可以将它们连接成一个 df 然后绘制,大 df 会有 NaN 但 seaborn 会忽略那些
df = pd.concat([NA, HG], axis=1)
sns.plot(data=df)