pythonmatplotlib

How to decouple hatch and edge color in matplotlib?


I would like to draw a bar in matplotlib with white as fill color, red as hatch color and black as edge color. However, it looks like the edge color changes also the color of hatch. So, I am not able to decouple the color of edges and hatch. Do you have any suggestion? Thanks.


Solution

  • Plot bar plot twice:

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

    enter image description here