我正在尝试读取名为'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])
答案 0 :(得分:1)
您应该将数据转换为整数类型(或浮点数)
tot.append(int(col[7]))
答案 1 :(得分:1)
for col in res:
tmp_tot = float(col[7])
tot.append(tmp_tot)
两种方式都有效!
干杯
答案 2 :(得分:0)
mut.append(col[0])
tot.append(col[7])
您附加col
列表的内容,即文本。您必须将其转换为int
或float
:
mut.append(float(col[0]))
tot.append(float(col[7]))