如何分隔这些条形图,我希望每个条形图之间的距离为1(指4种不同类型),并根据我从此代码中获得的输出找到附加的图像。< / p>
import numpy as np
import matplotlib.pyplot as plt
N = 10
Google = (10, 15, 32, 29, 13, 35, 2, 20, 27, 29)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind, Google, width, color='b')
Voicebase = (2, 16, 19, 30, 22, 30, 33, 4, 14, 18)
rects2 = ax.bar(ind + width, Voicebase, width, color='g')
Watson = (7, 17, 14, 19, 28, 4, 4, 34, 9, 17)
rects3 = ax.bar(ind + width*2, Watson, width, color='y')
Remeeting = (12, 21, 19, 35, 24, 6, 22, 31, 19, 14)
rects4 = ax.bar(ind + width*3, Remeeting, width, color='r')
# add some text for labels, title and axes ticks
ax.set_ylabel('Char edit distance')
ax.set_xticks(ind + width/2 )
ax.set_xticklabels(('A1', 'A2', 'A3', 'A4', 'A5','B1', 'B2', 'B3', 'B4', 'C1'))
ax.legend((rects1[0], rects2[0], rects3[0], rects4[0]), ('Google', 'Voicebase','Watson', 'Remeeting'))
def autolabel(rects):
"""
Attach a text label above each bar displaying its height
"""
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x() + rect.get_width()/2., 1.05*height,
'%d' % int(height),
ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
autolabel(rects3)
autolabel(rects4)
plt.show()
答案 0 :(得分:1)
一种可能的方法是增加ind
的间距,以便生成每第4个数字。这将为您的所有四个酒吧留出空间。
import numpy as np
import matplotlib.pyplot as plt
Google = [10, 15, 32, 29, 13, 35, 2, 20, 27, 29]
Voicebase = [2, 16, 19, 30, 22, 30, 33, 4, 14, 18]
Watson = [7, 17, 14, 19, 28, 4, 4, 34, 9, 17]
Remeeting = [12, 21, 19, 35, 24, 6, 22, 31, 19, 14]
ind = np.arange(1,40,4) # the x locations for the groups
width = 0.5 # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind, Google, width, color='b')
rects2 = ax.bar(ind + width, Voicebase, width, color='g')
rects3 = ax.bar(ind + width*2, Watson, width, color='y')
rects4 = ax.bar(ind + width*3, Remeeting, width, color='r')
# add some text for labels, title and axes ticks
ax.set_ylabel('Char edit distance')
ax.set_xticks(ind + width/2 )
ax.set_xticklabels(('A1', 'A2', 'A3', 'A4', 'A5','B1', 'B2', 'B3', 'B4', 'C1'))
ax.legend((rects1[0], rects2[0], rects3[0], rects4[0]), ('Google', 'Voicebase','Watson', 'Remeeting'))
def autolabel(rects):
"""
Attach a text label above each bar displaying its height
"""
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x() + rect.get_width()/2., 1.05*height,
'%d' % int(height),
ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
autolabel(rects3)
autolabel(rects4)
plt.show()
答案 1 :(得分:-1)
我想添加另一种方法来解决这个问题(在试验时解决)是通过降低宽度值,例如它假定4个部分的值加上空白部分。因此,通过设置值width = 0.2
,我们也会有一个不错的条形图。