Python使用行绘制数据,引用CSV文件中的行到列

时间:2016-10-15 19:28:39

标签: python python-2.7 pandas numpy matplotlib

以下是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" ,酒吧有不同的颜色!!根据标记,学生的颜色应有所不同。

如果拍摄对象的颜色最小,则以红色显示...如果拍摄对象的标记最高,则应以其他颜色显示。不同颜色的其他科目的平均分数?

我该怎么办?

1 个答案:

答案 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)