Matplotlib boxplot视觉样式:`whiskerprops`不起作用

时间:2016-07-16 18:42:21

标签: python matplotlib boxplot

在matplotlib boxplot的文档中,我们可以阅读:

  

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

好的,所以我通过了一个字典,在胡须上设置了一些视觉风格:

whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)

color外,设置无效。

在其他道具上可以观察到相同的行为:cappropsmedianpropsboxprops等。

后来我找到了原因,我将在答案中发布。我这样做只是因为其他人可能面临同样的问题,而且文档和教程没有回答这个问题。

1 个答案:

答案 0 :(得分:3)

当你传递一个dict来设置任何这些属性时,matplotlib会向你的字典添加元素,避免只覆盖现有的键。但是它并不知道某些属性有缩写:如果你有ls,它会添加'linestyle': '--',如果你有lw,它会添加'linewidth': 1.0 , 等等。这有两个含义:1)你不能在这里使用速记属性名称,只能使用长名称; 2)你的dict将被修改为调用boxplot的副作用。在我看来,Matplotlib不会在内部制作副本。因此,如果您想保留原始字典,则需要copy.deepcopy(props)

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