【问题标题】:matplotlib boxplot colormatplotlib 箱线图颜色
【发布时间】:2011-07-01 10:14:26
【问题描述】:

我正在尝试创建一组数据分箱 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 中设置框的颜色看起来很奇怪 提前谢谢你

【问题讨论】:

    标签: numpy matplotlib


    【解决方案1】:

    您可以将原始数据渲染为箱线图后面的散点图,然后隐藏箱线图的传单。

    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()
    

    【讨论】:

    • 感谢您的回复。我只是想知道以这种方式您将框的轮廓设置为“黑色”。如果你想让它们用 patch_artist=True 填充,我该如何设置填充的颜色?
    • 我终于找到了解决办法。我必须像这样 pylab.setp(bp['boxes'],facecolor='cyan',alpha=0.5) 在箱形图中设置创建的补丁的属性(使用 path_artist=True)
    • 也尝试重新着色箱线图。我认为迭代映射(由箱线图()返回)会很混乱。应该知道那个 setp() 方法 - 看起来很方便!
    • @Nicola Vianello 您的建议在我的系统上不起作用。它引发 AttributeError 消息“'Line2D' 对象没有属性 'set_facecolor'”。它实际上适用于您的系统吗?奇怪...
    • Nicola 的评论适用于 be,但我不得不使用 patch_artist=True 而不是 path_artist=True
    猜你喜欢
    • 2017-06-19
    • 2019-03-03
    • 1970-01-01
    • 2019-12-31
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多