在python上生成动态条形图时出错

在python上生成动态条形图时出错,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,从这个例子来看, 我想生成动态条形图 import sys import matplotlib.pyplot as plt import numpy as np groups = int(sys.argv[1]) subgroup = int(sys.argv[2]) fig, ax = plt.subplots() index = np.arange(groups) print index bar_width = 1.0 / (subgroup + 1) print bar_w

从这个例子来看,

我想生成动态条形图

import sys
import matplotlib.pyplot as plt
import numpy as np

groups = int(sys.argv[1])

subgroup = int(sys.argv[2])

fig, ax = plt.subplots()

index = np.arange(groups)

print index

bar_width = 1.0 / (subgroup + 1)

print bar_width

mainlist = []


for x in range(0, groups):
    #print x
    templist = []
    for num in range(0, subgroup):
        templist.append(num+1)
    #print templist
    mainlist.append(templist)

print mainlist

for cnt in range(0,subgroup):
    plt.bar(index + (bar_width * cnt), mainlist[cnt], bar_width)

plt.savefig('odd_bar_chart.png')
当我为组和子组传递相同的值时,这可以很好地工作

> odd_bar_chart.py 3 3
> odd_bar_chart.py 2 2
但是如果我像这样传递不同的值

奇数条形图.py 3 2 奇数条形图.py 2 3

它给出了以下错误 AssertionError:大小不兼容:参数“高度”必须是长度{first argument}或标量

现在我不知道图片中的高度是多少? 有谁能告诉我这里出了什么问题吗?

看一看。这里的前两个参数是
left
height
,指的是条形图左侧的值及其高度

错误消息通知您,第二个参数
height
的长度应与第一个参数的长度相同,或者是标量(单个值)

错误: 在迭代结束时,根据左侧位置绘制高度
mainlist[cnt]
index+(bar\u width*cnt)
。显然,您正在尝试调整
x
位置,以便使用带有*cnt的
bar_从空间上分离条形图,因此这是一个标量。然后,
的长度由
索引
给出,该索引由
index=np.arange(groups)
生成,因此将具有长度
。但是高度的长度由
子组
给出,这是在
模板列表
(具有长度
子组
)附加到
主列表
时完成的


因此,在生成数据的过程中会出现错误。通常情况下,最好是用手插入一些东西(就像他们在您引用的示例中所做的那样),或者使用生成一组随机数

mainlist[cnt]
中的列表的长度为
子组
,而
索引
的长度为
。如果它们的长度不同,你就不能那样画。