从csv文件绘制多个图形并输出到单个pdf / svg

时间:2015-11-14 20:33:32

标签: python pandas matplotlib

我有以下格式的一些csv数据。

Ln    Dr    Tag Lab    0:01    0:02    0:03    0:04    0:05    0:06    0:07    0:08   0:09
L0   St     vT  4R       0       0       0       0       0      0        0       0      0
L2   Tx     st  4R       8       8       8       8       8      8        8       8      8
L2   Tx     ss  4R       1       1       9       6       1      0        0       6      7

我想使用列(LnDrTgLab)作为键和0:0n字段来绘制时间序列图表时间序列图上的值。

我有以下代码。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

plt.ylabel('time')
plt.xlabel('events')

plt.grid(True)
plt.xlim((0,150))
plt.ylim((0,200))

a=pd.read_csv('yourfile.txt',delim_whitespace=True)
for x in a.iterrows():
    x[1][4:].plot(label=str(x[1][0])+str(x[1][1])+str(x[1][2])+str(x[1][3]))

plt.legend()
fig.savefig('test.pdf')

我这里只展示了我的数据子集。我的完整数据集中有大约200个条目(200行)。上面的代码将所有图形绘制在一个图中。我希望每一行都在一个单独的图中绘制。

1 个答案:

答案 0 :(得分:1)

使用subplot()

import matplotlib.pyplot as plt

fig = plt.figure()

plt.subplot(221) # 2 rows, 2 columns, plot 1
plt.plot([1,2,3])

plt.subplot(222) # 2 rows, 2 columns, plot 2
plt.plot([3,1,3])

plt.subplot(223) # 2 rows, 2 columns, plot 3
plt.plot([3,2,1])

plt.subplot(224) # 2 rows, 2 columns, plot 4
plt.plot([1,3,1])

plt.show()

fig.savefig('test.pdf')

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot