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óż