【问题标题】:How to decouple hatch and edge color in matplotlib?如何在matplotlib中解耦阴影和边缘颜色?
【发布时间】:2017-06-28 10:21:52
【问题描述】:

我想在matplotlib 中绘制一个条形图,填充颜色为白色,填充颜色为红色,边缘颜色为黑色。但是,看起来边缘颜色也会改变影线的颜色。所以,我无法分离边缘和阴影的颜色。你有什么建议吗? 谢谢。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    绘制条形图两次:

    import matplotlib.pyplot as plt
    from matplotlib.patches import Ellipse, Polygon
    
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    # draw hatch
    ax1.bar(range(1, 5), range(1, 5), color='none', edgecolor='red', hatch="/", lw=1., zorder = 0)
    # draw edge
    ax1.bar(range(1, 5), range(1, 5), color='none', edgecolor='k', zorder=1, lw=2.)
    
    ax1.set_xticks([1.5, 2.5, 3.5, 4.5])
    plt.show()
    

    【讨论】:

    • 非常感谢!这正是我所需要的。
    • 您对图例也有建议吗?我仍然有红色的阴影和红色的边缘
    • 添加到图例黑边补丁。
    • 这似乎不适用于matplotlib 2.0版?当我运行这段代码时,我得到一个黑色的填充图案。
    • @Coquelicot 在 Matplotlib 2.0 中,您现在可以直接使用 rcParams 配置阴影颜色
    【解决方案2】:

    在 Matplotlib 2.0 中,您现在可以使用 rcParams configure the hatch colour directly

    填充图案中线条的颜色和宽度现在可以通过 rcParams hatch.colorhatch.linewidth 进行配置,默认值分别为黑色和 1 点...没有 API 级别的填充颜色控制或线宽。

    无论 DPI 如何,阴影图案现在都以一致的密度呈现。以前,高 DPI 数字将比默认值更密集,而低 DPI 数字将不那么密集。这种旧的行为无法直接恢复,但可以通过重复填充说明符来增加密度。

    【讨论】:

    • 这意味着每个情节我只能孵化一种颜色...这很烦人...
    • 我有matplotlib 3.1.1 并且设置plt.rcParams['hatch.color'] 对我来说没有任何改变。虽然它适用于线宽
    • 对我来说,plt.rcParams['hatch.color'] 不起作用,因为另一个情节设置了边缘颜色。显然,这具有更高的优先级。
    • 另一个陷阱:Patch(color='red', hat='/') 不会使舱口可见。改用 Patch(facecolor='red', hat='/') !
    猜你喜欢
    • 2019-11-02
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多