Как установить ширину полосы, не зависящую от тиков в matplotlib?

Я работаю над каскадной диаграммой (что-то в этом стиле ) с использованием matplotlib. Я бы хотел, чтобы все мои бары различной ширины сливались друг с другом, но я бы хотел, чтобы тики внизу расширялись регулярно от 1 до 7, независимо от баров. Однако на данный момент это выглядит так:

Бархарт с нерегулярно разнесенными барами

Пока это то, что у меня есть:

python import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter n_groups = 6 name=['North America','Russia','Central & South America','China','Africa','India'] joules = [33.3, 21.8, 4.22, 9.04, 1.86, 2.14] popn=[346,143,396,1347,1072,1241] fig, ax = plt.subplots() index = np.arange(n_groups) bar_width = [0.346,.143,.396,1.34,1.07,1.24] opacity = 0.4 rects1 = plt.bar(index+bar_width, joules, bar_width, alpha=opacity, color='b', label='Countries') def autolabel(rects): # attach some text labels for ii,rect in enumerate(rects): height = rect.get_height() ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%s'%(name[ii]), ha='center', va='bottom') plt.xlabel('Population (millions)') plt.ylabel('Joules/Capita (ten billions)') plt.title('TPEC, World, 2012') plt.xticks(1, ('1', '2', '3', '4', '5','6') autolabel(rects1) plt.tight_layout() plt.show() 

И все варианты, которые я пробовал до сих пор, чтобы настроить интервал между барами, привели к аналогичным проблемам. Есть идеи?

    В настоящий момент проблема заключается в том, что ваш index является регулярной последовательностью, поэтому левые края каждого бара расположены равномерно. То, что вы хотите, – это index как текущее общее значение бара x-значений, так что левый край каждого бара выравнивается правым краем предыдущего.

    Вы можете сделать это, используя np.cumsum() :

     ... index = np.cumsum(bar_width) ... 

    Теперь index будет начинаться с bar_width[0] , поэтому вам нужно установить левый край баров в index - bar_width :

     rects1 = plt.bar(index-bar_width, ...) 

    Результат:

    введите описание изображения здесь

    Вы, конечно, захотите поиграть с ограничениями по осям и положениям ярлыков, чтобы они выглядели красиво.