Python 使用堆叠的条形图创建直方图
我以这种方式创建柱状图:Python 使用堆叠的条形图创建直方图,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我以这种方式创建柱状图: selected_features = ["HOUR","CLUSTER"] plt.figure(1) plt.hist(df[selected_features].values[:,0]) plt.title("HOUR") plt.xlabel("Value") plt.ylabel("Frequency") plt.draw() plt.show() filter = df["CLUSTER"] == 1 plt.hist([df["HOUR"][filter
selected_features = ["HOUR","CLUSTER"]
plt.figure(1)
plt.hist(df[selected_features].values[:,0])
plt.title("HOUR")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.draw()
plt.show()
filter = df["CLUSTER"] == 1
plt.hist([df["HOUR"][filter],df["HOUR"][~filter]],stacked=True)
plt.show()
CLUSTER
的值为0或1
现在,我想将每个条形图转换为一个具有两个区域(比如红色和绿色)的堆叠条形图,以便显示每个条形图的簇值的分布。我怎么做
编辑:
我尝试了这个方法,但它给出了一个错误ValueError:大小不兼容:参数“height”的长度必须为9或标量
:
N=9
ind = np.arange(N) # the x locations for the groups
width = 0.35
p1 = plt.bar(ind, df[df["CLUSTER"]==0][['HOUR']],color='r')
p2 = plt.bar(ind, df[df["CLUSTER"]==1][['HOUR']],color='y')
plt.legend((p1[0], p2[0]), ('0', '1'))
plt.show()
数据:
我是这样做的:
selected_features = ["HOUR","CLUSTER"]
plt.figure(1)
plt.hist(df[selected_features].values[:,0])
plt.title("HOUR")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.draw()
plt.show()
filter = df["CLUSTER"] == 1
plt.hist([df["HOUR"][filter],df["HOUR"][~filter]],stacked=True)
plt.show()
这可能会有帮助:@cel:谢谢。事实上,我已经检查了本教程并试图将其应用到我的案例中,但它给了我一条错误消息(请参见我的编辑)。您能同时提供您的数据吗?@DimKoim:好的,请参见我的上一次编辑。@cel:我认为这个解决方案对于我的案例来说过于复杂。我找到了另一个(更简单的)解决方案(请参阅我的答案)。如果其中一个答案解决了您的问题,最好接受您自己的或eyllanescs的解决方案,这样这个问题就不会留在未回答的问题列表中。@ImportanceOfBeingErnest:我想接受我的答案,但由于堆栈溢出的规则,我只能在2天内完成