matplotlib:boxplot对象中的传单未正确设置

时间:2015-09-09 13:32:03

标签: python python-2.7 matplotlib boxplot

我正努力将箱形图中的飞行器标记更改为我选择的自定义颜色。在前三个值之后,它将恢复为默认值。我看到有几个与此相关的matplotlib问题,有什么解决方案吗?

提前感谢您的帮助!

import matplotlib.pyplot as plt

x = [0.15, 0.11, 0.06, 0.06, 0.12, 0.56]
y = [x, x, x, x, x, x]
boxes = plt.boxplot(y, sym="o")

cols = ['green', 'red', 'blue', 'orange', 'purple', 'black']

for f, fc in zip(boxes['fliers'], cols):
    f.set_color(fc)
    f.set_markersize(40)
    f.set_alpha(0.6)
    f.set_markeredgecolor("None")
    f.set_marker('.')

plt.show()

enter image description here

1 个答案:

答案 0 :(得分:4)

原始问题中给出的代码在matplotlib v1.5dev的开发版本中不起作用。这是因为set_color方法不会对facecolor起作用,而应该是set_markerfacecolor。一个完整的工作示例是:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x = [0.15, 0.11, 0.06, 0.06, 0.12, 0.56]
y = [x, x, x, x, x, x]
boxes = plt.boxplot(y, 
                    flierprops={'alpha':0.6, 
                                'markersize': 40,
                                'markeredgecolor': 'None',
                                'marker': '.'
                                })

cols = ['green', 'red', 'blue', 'orange', 'purple', 'black']

for f, fc in zip(boxes['fliers'], cols):
    f.set_markerfacecolor(fc)

plt.show()

为了便于阅读,我还移动了要在flierprops中设置的所有固定属性。