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

2024-06-09 17:10:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读入一个名为“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])

Tags: csvimportnumpy列表matplotlibasresplt
3条回答

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

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

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

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

啊,应该花更多的时间。与Manuel的回答类似,我只是在for循环中添加了一个临时的holder以转换为float:

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

两种方法都有效!

干杯

相关问题 更多 >