Matplotlib 如何在Seaborn boxplot中加宽方框?

Matplotlib 如何在Seaborn boxplot中加宽方框?,matplotlib,graph,boxplot,seaborn,Matplotlib,Graph,Boxplot,Seaborn,我试图使用Seaborn()制作一个分组的箱线图,这些箱线都非常窄——窄得看不到分组的颜色 g = seaborn.factorplot("project_code",y="num_mutations",hue="organ", data=grouped_donor, kind="box", aspect=3) 如果我放大或将图形拉伸到屏幕宽度的几倍,我可以看到框,但显然这不是标准图形 这似乎是我的数据量的函数;如果我只绘制前500个点(6000个点中的前500个点),我会得

我试图使用Seaborn()制作一个分组的箱线图,这些箱线都非常窄——窄得看不到分组的颜色

g = seaborn.factorplot("project_code",y="num_mutations",hue="organ",
        data=grouped_donor, kind="box", aspect=3)

如果我放大或将图形拉伸到屏幕宽度的几倍,我可以看到框,但显然这不是标准图形

这似乎是我的数据量的函数;如果我只绘制前500个点(6000个点中的前500个点),我会得到可见但很小的框。它可能是我的数据的高方差的函数;根据matplotlib箱线图文件

默认的[宽度]为0.5,如果较小,则为0.15x(极端位置之间的距离)

不管是什么原因,如果我能把它们加宽的话,图表本身就有足够的空间来放更宽的方框


不幸的是,控制方框宽度的boxplot关键字
widths
不是有效的
factorplot
关键字,我找不到一个matplotlib函数,该函数将在绘图函数本身之外更改条形图或方框的宽度。我甚至找不到任何人在讨论这个问题;我发现最接近的是箱线图线宽。有什么建议吗?

为了将来的参考,这里有一些相关的代码,可以用图例绘制出正确的图形:(显然,这遗漏了一些重要的东西,实际上不会按原样运行,但希望它能显示一些棘手的部分)


使用
sns.boxplot
时,添加
dodge=False
将从版本0.9起解决此问题


sns.factorplot()
自0.9版以来已被弃用,并已被同样具有
dodge
参数的
catplot()替换

你能链接到你看到的情节吗?Seaborn箱线图占据尽可能多的水平空间,因此我不确定问题出在哪里。此外,如果您无法共享实际数据,请尝试共享一些代码,这些代码将生成再现问题的随机数据;这样做还可以让你深入了解问题所在。看起来色调级别完全嵌套在x变量中,我认为这是你的问题。只需删除
hue=“organe”
。没错,删除hue=“organe”会使所有框扩展到可用宽度!这是否意味着无法使用factorplot按器官对我的项目进行颜色编码?
palette=df[“Organe”]。映射(pal_dict)
pal_dict将器官作为键,颜色作为值应该可以实现这一点。
import matplotlib.pylab as pyp
import seaborn as sns

def custom_legend(colors,labels, legend_location = 'upper left', legend_boundary = (1,1)):
    # Create custom legend for colors
    recs = []
    for i in range(0,len(colors)):
        recs.append(mpatches.Rectangle((0,0),1,1,fc=colors[i]))
    pyp.legend(recs,labels,loc=legend_location, bbox_to_anchor=legend_boundary)

# Color boxplots by organ
organ_list = sorted(df_unique(grouped_samples,'type'))
colors = sns.color_palette("Paired", len(organ_list))
color_dict = dict(zip(organ_list, colors))
organ_palette = grouped_samples.drop_duplicates('id')['type'].map(color_dict)

# Plot grouped boxplot
g = sns.factorplot("id","num_mutations",data=grouped_samples, order=id_list, kind="box", size=7, aspect=3, palette=organ_palette)
sns.despine(left=True)
plot_setup_pre()
pyp.yscale('log')
custom_legend(colors,organ_list)