以下是CSV文件中的数据:每个价值由" COMMA"
分隔SName,Sub1,Sub2,Sub3, ... ,Sub10
0 A,40,50,33, ... ,78
1 B,55,55,33, ... ,66
2 C,99,100,34, ... ,44
我想仅绘制第0行 - 即学生姓名:从Sub1到Sub 10的A科目标记。图表应包含" BAR" ,酒吧有不同的颜色!!根据标记,学生的颜色应有所不同。
如果拍摄对象的颜色最小,则以红色显示...如果拍摄对象的标记最高,则应以其他颜色显示。不同颜色的其他科目的平均分数?
我该怎么办?
答案 0 :(得分:1)
许多情节的最简单方法可能是从matplotlib gallery处提供的一个样本开始。在这种情况下,我提醒自己使用两个样本的细节,因为我不经常使用matplotlib。此代码代表解决方案的一部分,因为它不会从csv中读取值。
import matplotlib.pyplot as plt
plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
# Example data
subjects = ['Sub%s'%_ for _ in range(1,11)]
marks = [51,43,55,60,65,43,78,67,88,44]
minMark=min(marks)
maxMark=max(marks)
colors=['green']*len(marks)
for _ in range(len(colors)):
if marks[_]==minMark:
colors[_]='red'
if marks[_]==maxMark:
colors[_]='yellow'
y_pos = np.arange(len(subjects))
plt.barh(y_pos, marks, align='center',color=colors)
plt.yticks(y_pos, subjects)
plt.xlabel('marks')
plt.title('Subject Marks for Student A')
plt.show()
使用csv filecontents这样:
SName,Sub1,Sub2,Sub3,Sub10
0,A,40,50,33,78
1,B,55,55,33,66
2,C,99,100,34,44
您可以使用以下代码恢复第一行标记:
import csv
first = True
with open('temp2.csv') as csvfile:
reader = csv.reader(csvfile)
for line in reader:
if first:
first=False
continue
marks=line
break
print (marks)