pythonmatplotlibalpha

How to set opacity of background colour of graph with Matplotlib


I've been playing around with Matplotlib and I can't figure out how to change the background colour of the graph, or how to make the background completely transparent.


Solution

  • If you just want the entire background for both the figure and the axes to be transparent, you can simply specify transparent=True when saving the figure with fig.savefig.

    e.g.:

    import matplotlib.pyplot as plt
    fig = plt.figure()
    plt.plot(range(10))
    fig.savefig('temp.png', transparent=True)
    

    If you want more fine-grained control, you can simply set the facecolor and/or alpha values for the figure and axes background patch. (To make a patch completely transparent, we can either set the alpha to 0, or set the facecolor to 'none' (as a string, not the object None!))

    e.g.:

    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    
    fig.patch.set_facecolor('blue')
    fig.patch.set_alpha(0.7)
    
    ax = fig.add_subplot(111)
    
    ax.plot(range(10))
    
    ax.patch.set_facecolor('red')
    ax.patch.set_alpha(0.5)
    
    # If we don't specify the edgecolor and facecolor for the figure when
    # saving with savefig, it will override the value we set earlier!
    fig.savefig('temp.png', facecolor=fig.get_facecolor(), edgecolor='none')
    
    plt.show()
    

    alt text