Matplotlib箱线图颜色

7
我正在尝试创建一个箱线图,将y与x进行分组的数据进行分组。我在making binned boxplot in matplotlib with numpy and scipy in Python中找到了一个有用的示例。现在的问题非常简单。如何在matplotlib.pyplot.boxplot中指定盒子的颜色,因为我想将其设置为透明,以便读者也可以看到原始数据。我知道存在于http://matplotlib.sourceforge.net/examples/pylab_examples/boxplot_demo2.html中显示的示例,但是否有比这更简单的方法?直接在boxplot中设置盒子颜色似乎很奇怪。谢谢。
1个回答

9
您可以将原始数据呈现为箱线图后面的散点图,然后隐藏箱线图的异常值。
import pylab
import numpy

pylab.figure()

data = [numpy.random.normal(i, size=50) for i in xrange(5)]

for x, y in enumerate(data):
    pylab.scatter([x + 1 for i in xrange(50)], y, alpha=0.5, edgecolors='r', marker='+')

bp = pylab.boxplot(data)
pylab.setp(bp['boxes'], color='black')
pylab.setp(bp['whiskers'], color='black')
pylab.setp(bp['fliers'], marker='None')

pylab.xlim(0,6)

pylab.show()

enter image description here


谢谢您的回复。我只是想知道,通过这种方式,您将框的轮廓设置为“黑色”。如果您想要使用patch_artist=True填充它们,我该如何设置填充的颜色? - Nicola Vianello
2
我终于找到了解决方案。我必须像这样设置箱线图中创建的补丁的属性(使用path_artist=True):pylab.setp(bp['boxes'],facecolor='cyan',alpha=0.5) - Nicola Vianello
尝试重新着色箱线图。我想通过迭代 boxplot() 返回的映射可能会很混乱。应该知道 setp() 方法-看起来非常方便! - Alex Leach
@Nicola Vianello,你的提议在我的系统上不起作用。它引发了一个AttributeError错误,错误信息为“'Line2D'对象没有'set_facecolor'属性”。它在你的系统上实际上可以工作吗?奇怪... - Christian O'Reilly
Nicola的评论对我有用,但我必须使用patch_artist=True而不是path_artist=True - klaus se

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接