在matplotlib boxplot
的文档中,我们可以阅读:
whiskerprops:dict或None(默认) 如果提供,将设置胡须的绘图样式
好的,所以我通过了一个字典,在胡须上设置了一些视觉风格:
whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)
除color
外,设置无效。
在其他道具上可以观察到相同的行为:capprops
,medianprops
,boxprops
等。
后来我找到了原因,我将在答案中发布。我这样做只是因为其他人可能面临同样的问题,而且文档和教程没有回答这个问题。
答案 0 :(得分:3)
当你传递一个dict来设置任何这些属性时,matplotlib会向你的字典添加元素,避免只覆盖现有的键。但是它并不知道某些属性有缩写:如果你有ls
,它会添加'linestyle': '--'
,如果你有lw
,它会添加'linewidth': 1.0
, 等等。这有两个含义:1)你不能在这里使用速记属性名称,只能使用长名称; 2)你的dict将被修改为调用boxplot
的副作用。在我看来,Matplotlib不会在内部制作副本。因此,如果您想保留原始字典,则需要copy.deepcopy(props)
。
值得一提的是,这些设置是matplotlib.lines.Line2D
的参数,请参阅其可用的其他属性的文档。