在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]
中的列表的长度为子组
,而索引
的长度为组
。如果它们的长度不同,你就不能那样画。