这是我的数据集:
df
A B C
0 13 Yes False
1 12 No True
2 2 Yes True
3 12 No False
4 4 No True
5 1 Yes True
6 1 No False
7 5 No True
8 15 Yes False
而且
df2
A B C
0 13 Yes False
1 12 No False
2 11 No False
3 15 Yes False
4 12 No False
5 21 Yes False
以下是有问题的代码:
fig, ax = plt.subplots(2,1, sharey="all", sharex="all")
df2.boxplot("A", by=["B","C"], ax=ax[0])
df.boxplot("A", by=["B","C"], ax=ax[1])
这个问题是,上面的子图中,右侧的箱线图应该向右移动1个单位,以与(Yes, False)
标签对齐。
我认为这是因为sharex
并不关心xticklabels,而是xticks的值(分别为[1,2]
和[1,2,3,4]
)。 我可以使用df2.boxplot
中的positions=[1,3]
参数来解决这个问题。
但问题是,如何在没有先验知识的情况下解决这个问题?
此外,这可能是Pandas或Matplotlib的错误,还是由于某种原因而期望出现这种行为?