【问题标题】:Reading values from csv and drawing bar chart with matplotlib in python从 csv 读取值并在 python 中使用 matplotlib 绘制条形图
【发布时间】:2011-03-30 11:05:00
【问题描述】:

我正在尝试读取一个名为“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])

【问题讨论】:

  • 通常使用genfromtxt 应该可以工作。你得到什么错误信息?

标签: python matplotlib


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    两种方式都有效!

    干杯

    【讨论】:

      【解决方案3】:
      mut.append(col[0])
      tot.append(col[7])
      

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

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

      【讨论】:

        猜你喜欢
        • 2021-02-01
        • 2018-05-18
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        相关资源
        最近更新 更多