Вот способ достижения желаемого графика.
Увеличение пределов x до 1 проще, если это сделать до инверсии оси x. Код для центрирования и изменения положения меток взят из этого поста .
import matplotlib.pyplot as plt
import matplotlib.transforms
import numpy as np
# first create some test data compatible with the question's data
job_r = ["".join(np.repeat(letter, np.random.randint(4, 15))) for letter in 'ABCDEFG']
att_y = np.random.uniform(0.5, 0.9, len(job_r))
att_n = 1 - att_y
# Sort by number of sales staff
idx = att_n.argsort()
job_r, att_y, att_n = [np.take(x, idx) for x in [job_r, att_y, att_n]]
y = np.arange(att_y.size)
fig, axes = plt.subplots(ncols=2, sharey=True, figsize=[8, 8])
axes[0].barh(y, att_n, align='center', color='#43e653', zorder=10)
axes[0].set(title='NO')
axes[1].barh(y, att_y, align='center', color='#ed1c3c', zorder=10)
axes[1].set(title='YES')
axes[1].set_xlim(xmax=1)
axes[0].set(yticks=y, yticklabels=job_r)
axes[0].yaxis.tick_right()
axes[0].set_xlim(xmax=1)
axes[0].invert_xaxis()
for ax in axes:
ax.margins(0.03)
ax.grid(True)
fig.tight_layout()
fig.subplots_adjust(wspace=0.7)
plt.setp(axes[0].yaxis.get_majorticklabels(), ha='center')
# Create offset transform by some points in x direction
dx = 60 / 72.
dy = 0 / 72.
offset = matplotlib.transforms.ScaledTranslation(dx, dy, fig.dpi_scale_trans)
# apply offset transform to all y ticklabels.
for label in axes[0].yaxis.get_majorticklabels():
label.set_transform(label.get_transform() + offset)
plt.show()