ticklabels = dfstacked.index.tolist()
dfstacked = dfstacked.reset_index(drop=True)
print(dfstacked)
ax = dfstacked.plot()
ax.fill_between(dfstacked.index, 0, dfstacked.values, where=dfstacked.
    values > 0, interpolate=True)
ax.fill_between(dfstacked.index, dfstacked.values, 0, where=dfstacked.
    values < 0, interpolate=True)
ax.xaxis.set_major_formatter(ticker.FixedFormatter(ticklabels))
plt.xticks(rotation=90)
plt.show()
fill_between from a stacked dataframe