使用python中的matplotlib从csv和绘制条形图中读取值

时间:2011-03-30 11:05:00

标签: python matplotlib

我正在尝试读取名为'StabilityResults.csv'的分隔csv并使用第0列的x标签创建第7列的条形图。从第0列获取标签不是问题,而是从中读取值col7到列表中似乎不能作为matplotlib中的有效输入。有没有办法转换我的值列表,以便它们在matplotlib中可读?

import matplotlib.pyplot as plt
import csv
import numpy as np

res = csv.reader(open('StabilityResults.csv'), delimiter=',')
res.next() # do not read header

mut = []
tot = [] 
a = 0
width = 0.2

for col in res:
    mut.append(col[0])
    tot.append(col[7])
    a += 1

ind = arange(a)

p1 = plt.bar(ind,tot,width,color='r')
labs = plt.xticks(ind+width,mut)

plt.show()

我也使用numpy的genfromtxt函数读取column7,但这给了一个也没有用的数组。

tot2 = np.genfromtxt('StabilityResults.csv', delimiter=',', dtype=None, names=True, deletechars=',', usecols=[7])

3 个答案:

答案 0 :(得分:1)

您应该将数据转换为整数类型(或浮点数)

tot.append(int(col[7]))

答案 1 :(得分:1)

啊,应该花更多的时间。与Manuel的答案类似,我只是在for循环中添加了一个临时持有者转换为浮点数:

for col in res:
    tmp_tot = float(col[7])
    tot.append(tmp_tot)

两种方式都有效!

干杯

答案 2 :(得分:0)

mut.append(col[0])
tot.append(col[7])

您附加col列表的内容,即文本。您必须将其转换为intfloat

mut.append(float(col[0]))
tot.append(float(col[7]))