我有一个pandas数据框,其中包含2列“height”和“class,class是一个包含3个值1,2和5的列。
现在我想按类别制作高度数据和颜色的直方图。 plot19_s["vegetation height"].plot.hist(bins = 10)
这是我的直方图
但现在我想通过直方图中的颜色变化来看到不同的类。
答案 0 :(得分:1)
由于我不确定潜在副本是否实际回答了此问题,因此这是使用numpy.histogram
和matplotlib bar
绘图生成堆积直方图的方法。
import pandas as pd
import numpy as np;np.random.seed(1)
import matplotlib.pyplot as plt
df = pd.DataFrame({"x" : np.random.exponential(size=100),
"class" : np.random.choice([1,2,5],100)})
_, edges = np.histogram(df["x"], bins=10)
histdata = []; labels=[]
for n, group in df.groupby("class"):
histdata.append(np.histogram(group["x"], bins=edges)[0])
labels.append(n)
hist = np.array(histdata)
histcum = np.cumsum(hist,axis=0)
plt.bar(edges[:-1],hist[0,:], width=np.diff(edges)[0],
label=labels[0], align="edge")
for i in range(1,len(hist)):
plt.bar(edges[:-1],hist[i,:], width=np.diff(edges)[0],
bottom=histcum[i-1,:],label=labels[i], align="edge")
plt.legend(title="class")
plt.show()