wyświetlanie słupków o stałej szerokości dla wszystkich zestawów danych w matplotlib

Mam następujące zestawy danych. Muszę wykreślić barchaty dla powiedzmy 1,2 lub wszystkie z nich. Gdy wykreślę wykres dla pojedynczego elementu danych (np .: xdata = [0] i ydata = [1000], xlabels = [' najpierw ”], pasek jest przekreślony, aby zajmował cały obszar działki. Jak ograniczyć szerokość pasma do wartości 0,45?

ydata=[1000,250,3000,500,3200,4000,2000]
xlabels=['first','sec','third','fourth','fifth','sixth','seventh']

barwidth = 0.45

import matplotlib.pyplot as plt

def create_bar_plot(entries):
    assert entries > 0    
    xdata = range(entries)
    xlabels=xlabels[:entries]
    xdata=xdata[:entries]
    ydata=ydata[:entries]        
    figure = plt.figure(figsize = (12,6), facecolor = "white")
    ax = figure.add_subplot(1,1,1)
    plt.grid(True)
    if xdata and ydata:
        ax.bar(xdata, ydata, width=barwidth,align='center',color='blue')
        ax.set_xlabel('categories',color='black')
        ax.set_ylabel('duration in  minutes',color='black')
        ax.set_title('duration plot created ')
        ax.set_xticks(xdata)
        ax.set_xticklabels(xlabels)
        figure.autofmt_xdate(rotation=30)
        plt.show()

Kiedy próbowałem

create_bar_plot (5)

Mam tę figurę

Ale kiedy zadzwoniłem

create_bar_plot (1)

Mam ten gruby bar

Jak więc sprawić, aby wykres pokazywał każdy pasek o stałej szerokości? Wygląda na to, że szerokość = barwidth w bar () nie działa tak, jak oczekiwałem. Bardzo prawdopodobne, że czegoś brakuje.

Proszę pomóż

questionAnswers(2)

yourAnswerToTheQuestion