这是我的第一个python图。 以下问题是关于绘制学生百分比(0-100%)。 我试图将我的x轴值设置为[0,10,20到100]并在间隔中显示条形。问题是x轴只获得5个值并且它们未排序。我必须在excel表的每个coloumn上显示数据并绘制图表,这就是我编写方法的原因。 I have attached this graph which i am getting from following code.
import xlrd as x
import matplotlib.pyplot as plt1
excelFile = 'cal1.xls'
workBook = x.open_workbook(excelFile)
workSheet = workBook.sheet_by_name("Sheet1")
rows = workSheet.nrows
cols = workSheet.ncols
def getData_Excel(col):
list = []
for count in range(1, rows, 1):
list.append(workSheet.cell_value(count, col))
print("\nStudent ", count, " : ", list[count-1:count])
print()
return list
print("Students Matric Marks:")
matricData = [getData_Excel(3)]
matricLegend = ['Matric %']
plt1.hist(matricData, histtype = 'bar', color = 'blue', rwidth = 0.8)
plt1.xlabel('Percentage')
plt1.ylabel('Number of Students')
plt1.xticks(range(0, 110, 10))
plt1.yticks(range(0, 160, 20))
plt1.title("Matric Marks")
plt1.legend(matricLegend)
plt1.show()
答案 0 :(得分:0)
如果我完全了解您的意思,就问题而言,您应使用bar
而不是hist
。
matricData
获得学生人数。 x轴表示分数的间隔。所以你可以像这样编码:
matricData = [getData_Excel(3)]
matricLegend = ['Matric %']
x = list(np.arange(0, 110, 10)) #changed
plt1.bar(x, matricData, width=8) #
plt1.xlabel('Percentage')
plt1.ylabel('Number of Students')
plt1.xticks(range(0, 110, 10)) #
plt1.yticks(range(0, 160, 10)) #
plt1.title("Matric Marks")
plt1.legend(matricLegend)
plt1.show()
我尝试使用示例代码:
matricData=[110, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10]