当N未知时,绘制N乘以1的图

时间:2017-09-09 16:55:06

标签: python seaborn boxplot

我目前正在使用seaborn在4轴上绘制多个图。为此,我手动选择nrows = 4,然后一次运行4个箱图。

$product = Session::get('product'); //step 1
unset($product[$key]);              //step 2
Session::put('product', $product);  //step 3

我想重写这个功能,以便它自动识别唯一的标签数量,自动创建轴数,然后绘制。

有谁知道我怎么能做到这一点?谢谢。

1 个答案:

答案 0 :(得分:1)

作业

fig, ax = plt.subplots(nrows=4, sharey=True)

makes ax a NumPy array of axes。此数组可以是一维或二维(取决于nrowsncols参数的值), 所以调用ax.ravel()用于确保它是一维的。 现在,您可以遍历zip(label, ax.ravel()),为每个标签和轴调用一次sns.boxplot

fig, ax = plt.subplots(nrows=4, sharey=True)
fig.set_size_inches(12, 16)
for labeli, axi in zip(label, ax.ravel()):
    sns.boxplot(data=df[df['label']==labeli], y='data', ax=axi)

请注意,zip在最短迭代器结束时结束。即便如此 label的长度为1000,因此在循环中只使用前4个项目 只有4轴。

或者,只需指定label = ['A','B','C','D'],因为该变量未在其他地方使用(至少不在发布的代码中)。