这应该按照您想要的方式工作:
import pandas as pddf = pd.Dataframe(dict( A=[1, 2, 3, 4], B=[2, 3, 4, 5], C=[3, 4, 5, 6], D=[4, 5, 6, 7]))import matplotlib.pyplot as plt%matplotlib inlinefig = plt.figure(figsize=(20, 10))ab_bar_list = [plt.bar([0, 1, 2, 3], df.B, align='edge', width= 0.2), plt.bar([0, 1, 2, 3], df.A, align='edge', width= 0.2)]cd_bar_list = [plt.bar([0, 1, 2, 3], df.D, align='edge',width= -0.2), plt.bar([0, 1, 2, 3], df.C, align='edge',width= -0.2)]
请记住,
width一组的价值必须为正,第二组的价值为负。使用
align的
edge为好。
你必须把与最大值酒吧的最低值,前杠,如果你想在酒吧中的另一条战线,变化出现堆积在彼此之上,而不是一个
df.B,并
df.D以
df.B +df.A和
df.D +df.C,分别。如果没有明显或组成的模式,请使用
alignby
edge和
widthmethod以及@piRSquared建议的模式。
另一种选择是访问绿色栏中的每个值,并将其与红色栏中的相应值进行比较,并进行相应的绘制(此操作中不必要的工作太多)。



