这是我第一次使用matlib,我们需要根据给定的数据集创建条形图。我一直在研究这个问题大约一个小时,我想知道是否有人能让我朝着正确的方向前进。
def plotBarChart(u, p, g):
bar1 = pyplot.bar(u[0], u[1], width=1, color='blue', align='center')
bar2 = pyplot.bar(u[0], u[2], width=1, color='red', align='center')
bar3 = pyplot.bar(u[0], u[3], width=1, color='green', align='center')
bar4 = pyplot.bar(p[0], p[1], width=1, color='blue', align='center')
bar5 = pyplot.bar(p[0], p[2], width=1, color='red', align='center')
bar6 = pyplot.bar(p[0], p[3], width=1, color='green', align='center')
bar7 = pyplot.bar(g[0], g[1], width=1, color='blue', align='center')
bar8 = pyplot.bar(g[0], g[2], width=1, color='red', align='center')
bar9 = pyplot.bar(g[0], g[3], width=1, color='green', align='center')
pyplot.legend((bar1, bar2, bar3, bar4, bar5, bar6, bar7, bar8, bar9), ('2012', '2013', '2014'), loc=1)
pyplot.xticks(pos3, names)
pyplot.ylabel('Amount of Students Enrolled')
pyplot.setp(pyplot.xticks()[1], rotation=15)
pyplot.axis([u[0], g[0], 0, 35000])
pyplot.show()
def main():
u = ['Undergraduate', 30147, 29440, 29255]
p = ['Professional', 946, 941, 947]
g = ['Graduate', 8163, 8407, 8568]
plotBarChart(u, p, g)
main()
程序应该运行main并获取给定数据并根据所述数据创建条形图。我知道条形图也可以通过循环完成,但我不想进入那个,如果我不必。他们给了我们一个样本输出图像,其中有三组三个条,一个标记为本科,由u数据组成,一个标记为专业,由p数据组成,一个标记为毕业,具有g数据。 y轴从0-35000延伸,x轴是“本科,专业,毕业”我只需要知道我哪里出错了,因为它不断给我一个错误,即条形高度必须小于13或缩放。
答案 0 :(得分:0)
这应该有效。它使用来自numpy的数组函数而不是for循环。
import numpy as np
import matplotlib.pyplot as plt
def plotBarChart(u, p, g):
# set bar index array and select a width for each bar
bar_index = np.array([1, 2, 3])
bar_width = 0.25
# plot all bars for each index
bars1 = plt.bar(bar_index, u, bar_width, color = 'b', label = 'Undergrad')
bars2 = plt.bar(bar_index + bar_width, p, bar_width, color = 'r', label = 'Professional')
bars3 = plt.bar(bar_index + 2 * bar_width, g, bar_width, color = 'g', label = 'Grad')
# set labels and display plot
plt.title('')
plt.xlabel('')
plt.ylabel('')
plt.xticks(bar_index + 1.5 * bar_width, ['2012', '2013', '2014'])
plt.legend()
plt.show()
def main():
# plot data
undergrad = [30147, 29440, 29255]
prof = [946, 941, 947]
grad = [8163, 8407, 8568]
plotBarChart(undergrad, prof, grad)
main()
希望这有帮助!