使用matplotlib绘制两个列表的图表

3
我尝试从CSV文件中导入数据并将其存储为两个单独的列表,然后绘制图表。Matplotlib能否使用字符串列表绘制图形,还是必须将列表转换为“int”类型?如果不行,为什么以下代码无法运行?
错误提示:
invalid literal for int() with base 10: '02_13_2014'
我的代码:
 import csv
    import numpy as np
    from numpy import genfromtxt
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates

with open('pytdef.csv','r') as f:
    reader = csv.reader(f)
    for row in reader:
        print (row)

first_column= ['Date']
second_column = ['Value']
Date_list = []
Value_list = []

with open('pytdef.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        Date_list.append(row[0])

with open('pytdef.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        Value_list.append(row[1])

    print (Date_list)
    print (Value_list)

Date_list = list(map(int,Date_list))
print (Date_list)
print (Value_list)


fig = plt.figure()
plt.plot_date(x=Date_list, y=Value_list)
plt.show()
1个回答

3

我认为这里的问题在于你的日期格式。如果你使用pandas,代码会简单得多。

#!/usr/bin/env python

%matplotlib inline

import pandas as pd
import matplotlib.pyplot as plt
from datetime import date

columns = ['dates', 'value']
data = pd.read_csv('/location_of_file/file_name.csv', header=False, names=columns)

我假设你的数据看起来像这样...

enter image description here


然后格式化日期。
data['dates'] = [date(int(x.split('_')[2]), int(x.split('_')[0]), 
    int(x.split('_')[1])) for x in data.dates]
plt.plot(data.dates, data.value);

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接