<p>我修改了代码如下</p>
<pre><code>fig1 = plt.figure()
A = list(range(1,len(dframe)+1))
labels = dframe['name'].tolist()
colorscheme = sns.color_palette(n_colors=len(dframe))
accuracyFig = fig1.add_subplot(221)
for i in range(0,len(A)):
accuracyFig.bar(A[i],dframe['accuracy'][i+1], align = 'center',label = labels[i], color = colorscheme[i])
accuracyFig.set_xticks([])
accuracyFig.set_ylim([0.5,1])
accuracyFig.set_title('Accuracy')
sensitivityFig = fig1.add_subplot(222)
for i in range(0,len(A)):
sensitivityFig.bar(A[i],dframe['sensitivity'][i+1], align = 'center',label = labels[i], color = colorscheme[i])
sensitivityFig.set_xticks([])
sensitivityFig.set_ylim([0.5,1])
sensitivityFig.set_title('Sensitivity')
specificityFig = fig1.add_subplot(223)
for i in range(0,len(A)):
specificityFig.bar(A[i],dframe['specificity'][i+1], align = 'center',label = labels[i], color = colorscheme[i])
specificityFig.set_xticks([])
specificityFig.set_ylim([0.5,1])
specificityFig.set_title('Specificity')
precisionFig = fig1.add_subplot(224)
for i in range(0,len(A)):
precisionFig.bar(A[i],dframe['precision'][i+1], align = 'center',label = labels[i], color = colorscheme[i])
precisionFig.set_xticks([])
precisionFig.set_ylim([0.5,1])
precisionFig.set_title('Precision')
# Plot the legend:
plt.legend(loc = 'lower center',bbox_to_anchor = (0,-0.05,1,2), ncol=2,
bbox_transform = plt.gcf().transFigure)
plt.show()
</code></pre>
<p>我没有使用固定长度的标签,而是直接从数据帧中复制它们,这样就可以了。在</p>
<p>我做了一些更新,并将参数(<code>n_cols = 2</code>)添加到legend函数中,这样我的输出图如下所示
<a href="https://i.stack.imgur.com/URXt3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/URXt3.png" alt="enter image description here"/></a></p>
<p>谢谢@Charles Morris的帮助</p>