I see exactly the same problem like this: Matplotlib charts lose transparency when saved as .ps / .eps , except that I am trying to execute output in PDF, rather than ps / eps.
The answers to the previous question indicate that eps does not support transparency and offers either rasterization or saving as a PDF. I get the correct output when I save as png, so it seems that matplotlib is handling transparency correctly, but the backend is not working. Obviously, PDF supports transparency, so this is not a problem with the format I'm trying to use.
I work on OS X (Yosemite) with the default macOSX matplotlib core server and using matplotlib 1.4.1. Is there a reason why this setting cannot provide transparent PDF output?
This has worked in the past (with OS X Mavericks and an earlier version of matplotlib), but I donβt know exactly what changes caused this problem.
If the following code is executed, the problem can be seen in the with_hatch.pdf file, but not in any of the other output files.
#! /usr/bin/env python import matplotlib.pyplot as plt fig = plt.figure( figsize=(6, 6), dpi=100, facecolor='white' ) ax = fig.add_axes( [0.15, 0.1, 0.8, 0.85] ) bin_edges = [0.0, 0.5, 0.5, 1.0, 1.0, 1.5, 1.5, 2.0, 2.0, 2.5, 2.5, 3.0, 3.0, 3.5, 3.5, 4.0, 4.0, 4.5, 4.5, 5.0, 5.0, 5.5, 5.5, 6.0, 6.0, 7.0, 7.0, 8.0] y_low = [0.9581631739289882, 0.9581631739289882, 0.8966054746563691, 0.8966054746563691, 0.8369962202270926, 0.8369962202270926, 0.7824880045351325, 0.7824880045351325, 0.7231695683685057, 0.7231695683685057, 0.6673767757896321, 0.6673767757896321, 0.6083447707111752, 0.6083447707111752, 0.5602384968623321, 0.5602384968623321, 0.5109567893600544, 0.5109567893600544, 0.4707872827805316, 0.4707872827805316, 0.4304527769718274, 0.4304527769718274, 0.39024135798617826, 0.39024135798617826, 0.3593458738615755, 0.3593458738615755, 0.3275704585658484, 0.3275704585658484] y_high = [0.9762065896798683, 0.9762065896798683, 0.9227253843496172, 0.9227253843496172, 0.8738222849514, 0.8738222849514, 0.8299500683866315, 0.8299500683866315, 0.7810616940586165, 0.7810616940586165, 0.7357506442258693, 0.7357506442258693, 0.6852756294051707, 0.6852756294051707, 0.6441575476130643, 0.6441575476130643, 0.5987788803224889, 0.5987788803224889, 0.5630257208701298, 0.5630257208701298, 0.5274860424153797, 0.5274860424153797, 0.4915335923551736, 0.4915335923551736, 0.46502435263727837, 0.46502435263727837, 0.43196895235913746, 0.43196895235913746] ax.fill_between( bin_edges, y_low, y_high, facecolor='green', edgecolor='white', alpha=0.4 ) plt.savefig( 'without_hatch.pdf' ) plt.savefig( 'without_hatch.png' ) ax.fill_between( bin_edges, y_low, y_high, facecolor='green', edgecolor='white', hatch='xxxx', alpha=0.4 ) plt.savefig( 'with_hatch.pdf' ) plt.savefig( 'with_hatch.png' )
Now sent to matplotlib bug tracker at: https://github.com/matplotlib/matplotlib/issues/3841