使用plt.plotfile从文本文件中绘制具有不同维度的列

时间:2016-01-28 16:35:50

标签: python matplotlib

我有一个包含四列的文本文件。第一个和第二个是日期,第三个和第四个是数据。我可以使用以下代码绘制第一列和第二列。但是,代码无法绘制第三个和第四个。我需要在同一个图中绘制它们(带有2条曲线的图形)。

数据

2011-01-01,0.860862069,2011-01-01,4.0491525424
2011-01-02,0.593125,2011-01-26,0.775
2011-01-03,0.5793617021,2011-01-27,0.6044210526
2011-01-04,0.5760416667,2011-01-28,0.5938947368
2011-01-05,0.5657446809,2011-01-29,0.5843157895
2011-01-06,0.5635416667,2011-01-30,0.5675789474
2011-01-07,0.5617021277,2011-01-31,0.5555789474
2011-01-08,0.560625,2011-02-01,0.5567368421
2011-01-09,0.5563829787,2011-02-02,0.5470526316
2011-01-10,0.5704166667,2011-02-03,0.5690526316
2011-01-11,0.5574468085,2011-02-04,0.5907368421
2011-01-12,0.5589583333,2011-02-05,0.5394736842
2011-01-13,0.5621276596,2011-02-06,0.5182105263
2011-01-14,0.55125,2011-02-07,0.5251578947
2011-01-15,0.5436170213,2011-02-08,0.5234736842
2011-01-16,0.5295833333,2011-02-09,0.5109473684
2011-01-17,0.5231914894,2011-02-10,0.5206315789
2011-01-18,0.5233333333,2011-02-11,0.5374736842
2011-01-19,0.5532,2011-02-12,0.524
2011-01-20,0.51,2011-02-13,0.4884210526
2011-01-21,0.454,2011-02-14,0.4438947368
2011-02-06,0.5251612903,2011-02-15,0.4503157895
2011-02-07,0.5231914894,2011-02-16,0.4554736842
2011-02-08,0.51875,2011-02-17,0.4391578947
2011-02-09,0.5029787234,2011-02-18,0.42
2011-02-10,0.4839583333
2011-02-11,0.4731914894
2011-02-12,0.47
2011-02-13,0.4804255319
2011-02-14,0.4904166667
2011-02-15,0.4936170213

代码

import matplotlib.pyplot as plt

fname_read = '/home/omar/Desktop/2011.csv'

plt.plotfile(fname_read, delimiter=',', cols=(0, 1, 3), 
             names=('day','data'), marker='o')

plt.show()

错误

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "/home/omar/python/plot_txt.py", line 13, in <module>
names=('Year','Topsoil Moisture'), marker='o')
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2343, in plotfile
yname, y = getname_val(cols[i])
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2318, in getname_val
name = r.dtype.names[int(identifier)]
IndexError: tuple index out of range

1 个答案:

答案 0 :(得分:0)

Omar,您确定您的数据格式正确吗?查看数据文件的倒数第二行:

  

2011-02-09,0.5029787234,2011-02-18,0.42 2011-02-10,0.4839583333   2011-02-11,0.4731914894

你使用逗号作为分隔符,但那里也有空格。我不确定,但如果空白被解释为换行符,那倒数第二行的最后一项

  

2011-02-11,0.4731914894

只有两个元素,可能会导致你的IndexError。