并排绘制某些条形图

时间:2019-03-21 12:36:59

标签: python python-3.x matplotlib

我有两个小节,稍后我想分别画出3、4、5个小节。对于每个条形图,都会有一些x-ticks,但它们都与主图中一样,但是具有不同的y-ticks值。我想将它们紧挨着而不是堆叠在一起。

我的代码示例

y_ticks_1 = ['A1', 'A2', 'A3', 'A4'] 
x_ticks_1 = [2.5, 3.5, 4.5, 8.5]
y_ticks_2 = ['A1', 'A3', 'A4']
x_ticks_2 = [3.5, 6, 7.5]
#later on there will be more sets of data

width = 1
y_pos = arrange(len(y_ticks_1))
figure('bar', figsize=(11,5))
barh(y_ticks_1, x_ticks_1, align='edge', alpha=0.5)
barh(y_ticks_2, x_ticks_2, color='r', align='edge', alpha=0.5)
yticks(y_pos + width/2)
xlabel('yield (%)')

但是当我这样做时,它只会改变y轴的长度,并且条形图仍然相互覆盖。

1 个答案:

答案 0 :(得分:2)

我将针对两组数据回答您的特定问题。您可以使用负高度将刻度线两侧的条对齐。

y_ticks_1 = ['A1', 'A2', 'A3', 'A4'] 
x_ticks_1 = [2.5, 3.5, 4.5, 8.5]
y_ticks_2 = ['A1', 'A3', 'A4']
x_ticks_2 = [3.5, 6, 7.5]

y_pos = np.arange(len(y_ticks_1)+1)
plt.figure('bar', figsize=(11,5))
plt.barh(y_ticks_1, x_ticks_1, align='edge', height=0.3, alpha=0.5)
plt.barh(y_ticks_2, x_ticks_2, color='r', height=-0.3, align='edge', alpha=0.5)
plt.yticks(y_pos)
plt.xlabel('yield (\%)')

enter image description here