2016-10-15 115 views
-2

下面是CSV文件中的數據:通過「逗號」Python的數據繪製使用行從CSV指行列文件

SName,Sub1,Sub2,Sub3, ... ,Sub10 
0 A,40,50,33, ... ,78 
1 B,55,55,33, ... ,66 
2 C,99,100,34, ... ,44 

我想繪製只有0行分隔每個值 - 這是學生姓名:A的主題是從Sub1到Sub 10的標記。該圖應包含「BAR」,不同顏色的酒吧!取決於顏色對學生的顏色應該有所不同。

如果一個主體有最低的顏色,那麼它顯示在紅色......如果一個主體有最高的分數,它應該以另一種顏色顯示。不同顏色的其他科目的平均分數?

我該怎麼辦?

+0

是否真的爲SNAME和值之間沒有逗號Sub1的值? –

+0

這是所有的逗號分隔vales ... CSV文件顯然它有@BillBell – vinay

+0

那麼,請你編輯你的問題,以反映這一點。這並不明顯;一個csv文件可以有多種格式。 –

回答

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)