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

dee*_*nes 2 python matplotlib boxplot

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

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

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

whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)
Run Code Online (Sandbox Code Playgroud)

除了 之外,这些设置没有任何影响color

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

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

dee*_*nes 5

当您传递一个字典来设置任何这些属性时,matplotlib 会将元素添加到您的字典中,从而避免只覆盖现有的键。但它不知道某些属性有缩写:如果你有ls,它会添加'linestyle': '--',如果你有lw,它会添加'linewidth': 1.0,等等。这有两个含义:1)这里不能使用简写属性名称,只能使用长名称;2)你的字典将被修改作为调用的副作用boxplot。Matplotlib 不会在内部进行复制,而我认为它应该这样做。所以如果你想保留原来的字典,你需要copy.deepcopy(props).

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