在 matplotlib 中显示所有数据集的固定宽度条形

dam*_*mon 5 python matplotlib

我有以下数据集。我需要绘制 1,2 或所有数据集的条形图。当我绘制单个数据项的图表时(例如:xdata=[0]ydata=[1000], xlabels=['first'],条形图会占据整个绘图区域。如何做我将条宽限制为 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()
Run Code Online (Sandbox Code Playgroud)

当我尝试时

create_bar_plot(5)
Run Code Online (Sandbox Code Playgroud)

我得到了这个数字 https://i.stack.imgur.com/nhHEM.jpg

但当我打电话时

create_bar_plot(1)
Run Code Online (Sandbox Code Playgroud)

我得到了这个胖条

https://i.stack.imgur.com/e0IJi.jpg

那么,如何使绘图显示固定宽度的每个条形呢?看来它width=barwidthbar()没有像我预期的那样工作..很可能我错过了一些东西..

请帮忙

wim*_*wim 3

它们实际上是相同的条形宽度,只是 x 轴比例不同。看:

>>> create_bar_plot(5)
>>> plt.gca().get_xbound()
(-1.0, 5.0)
>>> create_bar_plot(1)
>>> plt.gca().get_xbound()
(-0.30000000000000004, 0.30000000000000004)
>>> ax = plt.gca()
>>> ax.set_xbound(-1.0 ,5.0)
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

1