我试图创建“能力图”的生产目标。
此图表包括有关“计划值”、“当前值”和“延迟单位”的信息。黄色条是“计划”,每个条都是静态的。绿色条是当前值,显示此时生产了多少件。最后一个是“延迟单位”。如果单位生产得太晚-则变为红色。
举个例子:第45周生产需要300个单位,生产了62个(包括10个后期单位),第45周生产了10个单位,但应该在第44周生产,这就是为什么现在变成红色。
我的问题是:我怎么能只在第45周添加红色条?而不是在整个图上的每个条上。现在我有这样的结果:x1c 0d1x
我可以改变代码,得到这样的图表,但这样我就失去了周数。
import matplotlib.pyplot as plt
import numpy as np
plt.figure('Capacity chart 2023')
# create data
x = [42,43,44,45]
y1 = np.array(300) # plan
y2 = np.array([172, 132, 189, 62]) # fact
y3 = np.array(10) # late
# plot bars in stack manner
plt.bar(x, y1, color='yellow', align="center", tick_label=x) # plan
plt.bar(x, y2, color='green', align="center", tick_label=x) # fact
plt.bar(x, y3, color='red', align="center", tick_label=x) # late
ax = plt.gca()
for container in ax.containers:
plt.bar_label(container)
plt.title('Capacity chart 2023')
plt.ylabel('Units amount')
plt.xlabel('Week number')
plt.legend(["Plan value", "Current value", "Late units"], loc="upper right")
plt.get_current_fig_manager().window.state('zoomed')
plt.show()
如果我添加新列表:
i = [45,45,45,45]
并更改红色条的x位置:
plt.bar(i, y3, color='red', align="center", tick_label=x) # late
我只在第45周得到了红条,但就像我上面说的,我失去了周数。
有没有可能的方法来显示3堆叠酒吧不是在每个酒吧,但只有当它需要?
1条答案
按热度按时间cigdeys31#
我不确定我是否完全理解。你可以在“当前值”上绘制“迟到单位”条,只有在“迟到单位”存在的地方。下面是示例代码: