Setting flier (outlier) style in Seaborn boxplot is ignored
使用Seaborn,我可以在同一张图上创建一个由多个
但是,seaborn.boxplot上的API文档仅提供了参数
由于Seaborn使用matplotlib进行绘图,因此我想可以为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # create a dataframe df = pd.DataFrame({'column_a': [3, 6, 200, 100, 7], 'column_b': [1, 8, 4, 150, 290], 'column_c': [6, 7, 20, 80, 275]}) # set figure size sns.set(rc={"figure.figsize": (14, 6)}) # define outlier properties flierprops = dict(marker='o', markersize=5) # create boxplot ax = sns.boxplot(df, vert=False, showmeans=True, flierprops=flierprops) plt.show() |
结果:

根据提供的字典,我希望有一个大的红色圆圈代表
当直接使用matplotlib时,该线程描述了一个类似的问题-但是,从讨论中,我猜测在使用最新版本的matplotlib时应同时解决此问题。
我使用iPython笔记本(iPython 3.10),matplotlib 1.4.3和seaborn 0.5.1。进行了尝试。
Seaborn的boxplot代码将忽略您的flierprops参数,并在将参数传递给Matplotlib之前用它自己的参数覆盖。 Matplotlib的boxplot还将返回所有flier对象作为其返回值的一部分,因此您可以在运行boxplot后修改此对象,但Seaborn不会返回此对象。
覆盖flierprops(和sym)似乎是一个错误,所以我看看是否可以解决:请参见此问题。 同时,您可能要考虑使用matplotlib的boxplot代替。 查看seaborn的代码可能很有用(boxplot位于distributions.py中)。
更新:现在有一个修复此问题的拉取请求(