Python Matplotlib箱线图视觉样式:`whiskerprops`不起作用

Python Matplotlib箱线图视觉样式:`whiskerprops`不起作用,python,matplotlib,boxplot,Python,Matplotlib,Boxplot,在matplotlib的箱线图文档中,我们可以阅读: whiskerprops:dict或None(默认值) 如果提供,将设置胡须的打印样式 好的,所以我通过了一个dict在胡须上设置了一些视觉样式: whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'} boxplot(..., whiskerprops = whiskerprops) 除了颜色之外,这些设置没有任何效果 在其他道具上也可以观察到同样的行为:capprops

在matplotlib的
箱线图
文档中,我们可以阅读:

whiskerprops:dict或None(默认值) 如果提供,将设置胡须的打印样式

好的,所以我通过了一个dict在胡须上设置了一些视觉样式:

whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)
除了
颜色
之外,这些设置没有任何效果

在其他道具上也可以观察到同样的行为:
capprops
medianprops
boxprops
,等等


后来我找到了原因,我会把它贴在一个答案里。我这样做只是因为其他人可能会面临同样的问题,而文档和教程没有回答这个问题。

当您传递dict以设置这些属性时,matplotlib将向字典中添加元素,避免只覆盖现有键。但它不知道某些属性有缩写:如果您有
ls
,它将添加
“线型”:“--”
,如果您有
lw
,它将添加
“线宽”:1.0
,依此类推。这有两个含义:1)这里不能使用速记属性名称,只能使用长名称;2) 由于调用
箱线图
,您的dict将被修改。在我看来,Matplotlib不会在内部复制。因此,如果您想保留原始记录,您需要
copy.deepcopy(props)

值得一提的是,这些设置是
matplotlib.lines.Line2D
的参数,有关其他可用属性,请参阅其文档