为条形图中的每个条设置恒定的宽度 - python

我试图绘制一个条形图,其中每个垃圾箱都有不同的长度,结果我得到了一个非常丑陋的结果。c :)我想做的仍然是能够定义一个参考长度的垃圾箱,但是所有条形图以相同的固定宽度绘制。我怎样才能做到这一点?到目前为止,这是我所做的:

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_palette("deep", desat=.6)
sns.set_context(rc={"figure.figsize": (8, 4)})
np.random.seed(9221999)

data = [0,2,30,40,50,10,50,40,150,70,150,10,3,70,70,90,10,2] 
bins = [0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200]
plt.hist(data, bins=bins);

编辑

这个问题被标记为重复,但实际上没有建议的链接解决了我的问题;第一个是非常糟糕的解决方法,而第二个根本无法解决问题,因为它将所有条形图的宽度设置为一定数量。

python大神给出的解决方案

在这里,您可以随意使用seaborn。但是您必须了解seaborn本身使用matplotlib来创建图。
AND:请删除您的other question,因为它确实是重复的。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_palette("deep", desat=.6)
sns.set_context(rc={"figure.figsize": (8, 4)})

data = [0,2,30,40,50,10,50,40,150,70,150,10,3,70,70,90,10,2]
bins = [0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200]


bin_middles = bins[:-1] + np.diff(bins)/2.
bar_width = 1. 
m, bins = np.histogram(data, bins)
plt.bar(np.arange(len(m)) + (1-bar_width)/2., m, width=bar_width)
ax = plt.gca()
ax.set_xticks(np.arange(len(bins)))
ax.set_xticklabels(['{:.0f}'.format(i) for i in bins])

plt.show()

我个人认为,这样绘制数据会造成混淆。具有非线性(或非对数)轴缩放通常不是一个好主意。