首页 > 解决方案 > 将表格宽度调整为条形图

问题描述

我想用表格的列宽度调整条形图宽度,以便它们对齐。任何帮助将非常感激。

import numpy as np
import matplotlib.pyplot as plt

model1=np.array((39.6,83.7,96.2,1929.6,2098.7,2130.7,2466.7,2563.1,2585.1,3576.7))
model2=np.array((72.3,99.7,128.6,609.3,748.9,2151.4,2547.0,3580.4,3663.7,3673.3))
model3=np.array((1648.4,1715.6,1942.3,2386.3,2756.7,3453.8,3519.4,3626.4,3885.1,3891.0))
model4=np.array((1440.5,1517.6,1899.5,2362.6,2588.0,3230.7,3239.3,3269.7,3289.3,3382.2))
razlika12=np.array((45.27,16.01,25.15,-216.69,-180.25,0.96,3.15,28.41,29.44,2.63))
razlika23=np.array((95.61,94.19,93.38,74.47,72.83,37.71,27.63,1.27,5.70,5.59))
razlika34=np.array((-14.43,-13.05,-2.25,-1.00,-6.52,-6.91,-8.65,-10.91,-18.11,2-15.04))
model = ['f1', 'f2', 'f3', 'f4', 'f5', 'f6','f7', 'f8', 'f9', 'f10']
x_pos=np.arange(len(model))
plt.bar(x_pos, model1,width=0.4, color = 'navy' , label='Model 1')
plt.bar(x_pos+0.4,model2,width=0.4, color = 'black' , label='Model 2')
plt.legend(('Model 1', 'Model 2'))

the_table = plt.table(cellText=[model1, model2, razlika12],
              rowLabels=['Model 1', 'Model 2', 'Razlika [%]'],
              rowColours=['white', 'White', 'white'],
              colLabels=['f1 [Hz]', 'f2 [Hz]', 'f3 [Hz]', 'f4 [Hz]', 'f5 [Hz]', 'f6 [Hz]','f7 [Hz]', 'f8 [Hz]', 'f9 [Hz]', 'f10 [Hz]'],
              cellLoc='center',
              colLoc='center',
              loc='bottom')
plt.subplots_adjust(left=0, bottom=0)

plt.ylabel("Vrednost lastne frekvence [Hz]")
plt.xlabel('Zaporedna številka lastne frekvence [/]', labelpad=60)
plt.xticks([])
plt.show()

当前图像新图片

标签: pythonmatplotlib

解决方案


您可以添加colWidthstable命令:

the_table = plt.table(cellText=[model1, model2, razlika12],
              rowLabels=['Model 1', 'Model 2', 'Razlika [%]'],
              rowColours=['white', 'White', 'white'],
              colLabels=['f1 [Hz]', 'f2 [Hz]', 'f3 [Hz]', 'f4 [Hz]', 'f5 [Hz]', 'f6 [Hz]','f7 [Hz]', 'f8 [Hz]', 'f9 [Hz]', 'f10 [Hz]'],
              cellLoc='center',
              colLoc='center',
              colWidths=[1/(len(model1)+1)]*len(model1),   # here
              loc='bottom')

输出:

在此处输入图像描述


推荐阅读