You should use the matplotlib API and call ax.set_xticklabels(res.index, rotation=0) as follows:
index = Index(['loop1', 'loop2'], name='segment_name') data = [[100] * 3, [100] * 3] columns = ['sample1', 'sample2', 'sample3'] df = DataFrame(data, index=index, columns=columns) fig, ax = subplots() df.plot(ax=ax, kind='bar', legend=False) ax.set_xticklabels(df.index, rotation=0) ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) fig.savefig('results.png', bbox_inches='tight')
To get the received schedule:

Alternatively, you can call fig.autofmt_xdate() for a nice tilting effect, which you can, of course, work with the above (and more general) ax.set_xticklabels() :
fig, ax = subplots() df.plot(ax=ax, kind='bar', legend=False) fig.autofmt_xdate() ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) fig.savefig('results-tilted.png', bbox_inches='tight')

source share