Я пытаюсь построить гистограмму с несколькими столбцами - val[0][0]
и val[1][0]
вместе с несимметричными панелями ошибок error1[0]
и error2[0]
соответственно. Участок будет иметь 7 столбцов с двумя данными. Ниже приведен код, который у меня есть, но он выдает ошибку ValueError: incompatible sizes: argument 'height' must be length 2 or scalar
.
import numpy as np
import matplotlib.pyplot as plt
val = [[26.0,35.0,-6.0,22.0,38.0,19.0,12.0],
[28.6,36.1,4.6,27.2,43.7,11.2,25.1]]
error1=[[17.0,17.0],[15.0,15.0],[18.0,13.0],[13.0,15.0],[3.0,2.0],[9.0,8.0],[15.0,12.0]]
error2=[[2.4,2.4],[3.7,2.4],[6.4,4.4],[9.4,10.3],[2.1,2.8],[30.4,7.8],[2.5,2.5]]
length = len(val)
x_labels = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7']
fig, ax = plt.subplots()
barwidth = 0.25
x = np.arange(length)
ax.bar(x, val[0][0], barwidth, label='catagory1', yerr=[error1[0]])
ax.bar(x + 1*barwidth, val[0][1], barwidth, label='catagory2', yerr=[error2[0]])
ax.set_ylabel('values')
ax.set_ylim(0,75)
ax.set_xticks(x + barwidth + barwidth/2)
ax.set_xticklabels(x_labels)
ax.set_xlabel('X')
ax.set_title('Plot')
ax.legend()
plt.grid(True, 'major', 'y', ls='--', lw=.5, c='k', alpha=.3)
fig.tight_layout()
plt.show()