我目前正在使用seaborn在4轴上绘制多个图。为此,我手动选择nrows = 4,然后一次运行4个箱图。
$product = Session::get('product'); //step 1
unset($product[$key]); //step 2
Session::put('product', $product); //step 3
我想重写这个功能,以便它自动识别唯一的标签数量,自动创建轴数,然后绘制。
有谁知道我怎么能做到这一点?谢谢。
答案 0 :(得分:1)
作业
fig, ax = plt.subplots(nrows=4, sharey=True)
makes ax
a NumPy array of axes。此数组可以是一维或二维(取决于nrows
和ncols
参数的值),
所以调用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']
,因为该变量未在其他地方使用(至少不在发布的代码中)。