我正在尝试创建一个堆叠条形图。我提供的代码几乎是我想要做的,即有12个x值,每个月一个,每组4个条形图,每年一个。我试图实现的唯一区别是将条形图堆叠起来,不同的颜色来自颜色字典,每个PC值一个。所以最终的图,我应该有确切的数量的酒吧,在相同的确切位置,但每个酒吧应该是一个堆叠版本的当前之一。这甚至是可能的?如果这是不可能的,你有其他的想法,如何有人可以直观地表示变化和金额的PC值为每个月,每年,我很高兴听到你的建议
import pandas as pd
import random
import matplotlib.pyplot as plt
N=100
pc_col = [random.randint(1,7) for i in range(N)]
year_col = [random.randint(2020,2023) for i in range(N)]
month_col = [random.randint(1,12) for i in range(N)]
data = {'PC': pc_col, 'Year': year_col, 'Month': month_col}
data = pd.DataFrame(data)
counts = data.groupby(['Month', 'Year']).size().unstack()
counts.plot(kind='bar')
plt.xlabel('Month')
plt.ylabel('Count')
plt.title('Counts by Month and Year')
plt.show()
我已经尝试了不同的group_by方法的堆栈参数,但它似乎并没有真正做我想要的。我也发现了这个Pandas: Stacked bar plot with adjacent bars,但这样,x-tick标签放错了位置。我也发现了这个Multiple stacked bar plot with pandas,但在我的情况下,我不知道默认情况下数据集将有多少年
1条答案
按热度按时间0s0u357o1#
我不是很确定,但看看这是不是你要找的。
1.我把整个条形图放在一个FOR循环中,每个循环代表一年
1.分组时,使用PC沿着月份和年份
1.从索引中删除Year(使用xs索引1)
1.绘制此条形图(每年一个图)
1.根据1/年数调整宽度和位置
1.在第一次运行期间读取图例,并仅用此替换(无重复)
我想我假设第一年有所有PC值的数据,但除此之外,希望这应该起作用。希望这有帮助...