Matplotlib:barh全宽条

时间:2019-06-21 10:19:37

标签: matplotlib

我正在尝试在matplotlib中生成堆叠的水平条形图。我面临的问题是,条形图的宽度没有完全填满绘图区域的可用宽度(右侧的额外空间)。

很遗憾,我在网上找不到任何信息。 我该怎么办才能解决这个问题?

Chart with additional space on the right of the bars

measures = ("A", "B", "C", "D", "A", "B", "C", "D", "A", "B")

measure_bars = y_pos = np.arange(len(measures))
yes_data = [10, 10, 10, 10, 15, 10, 10, 10, 10, 10]
number_of_answers = [20, 30, 20, 20, 20, 20, 20, 20, 20, 20]
font = {'fontname': 'Arial', 'color': '#10384f'}

yes_data = [i / j * 100 for i, j in zip(yes_data, number_of_answers)]
no_data = [100 - i for i in yes_data]

bar_width = 0.6

plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False


fig = plt.figure()

plt.barh(measure_bars, yes_data, color='#89d329', height=bar_width, zorder=2)
plt.barh(measure_bars, no_data, left=yes_data, color='#ff3162', height=bar_width, zorder=3)

plt.grid(color=font["color"], zorder=0)
plt.yticks(measure_bars, measures, **font)
plt.title("TECHNICAL AND ORGANIZATIONAL MEASURES", fontweight="bold", size="16", x=0.5, y=1.1, **font)

ax = plt.axes()
ax.xaxis.set_major_formatter(PercentFormatter())

ax.spines['bottom'].set_color(font["color"])
ax.spines['top'].set_color(font["color"])
ax.spines['right'].set_color(font["color"])
ax.spines['left'].set_color(font["color"])
ax.xaxis.label.set_color(font["color"])
ax.tick_params(axis='x', colors=font["color"])

for tick in ax.get_xticklabels():
    tick.set_fontname(font["fontname"])

ax.xaxis.set_ticks(np.arange(0.0, 100.1, 10))

plt.gca().legend(('Yes', 'No'), bbox_to_anchor=(0.7, 0), ncol=2, shadow=False)
plt.show()

1 个答案:

答案 0 :(得分:0)

请添加(在中间)

ax.set_xlim(0, 1)