【问题标题】:plotting a timeseries graph in python using matplotlib from a csv file使用 csv 文件中的 matplotlib 在 python 中绘制时间序列图
【发布时间】:2016-02-14 09:29:14
【问题描述】:

我有一些以下格式的 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 字段作为值来绘制时间序列图。

我有以下代码。

#!/usr/bin/env python

import matplotlib.pyplot as plt
import datetime
import numpy as np
import csv
import sys


with open("test.csv", 'r', newline='') as fin:
    reader = csv.DictReader(fin)
    for row in reader:
          key = (row['Ln'], row['Dr'], row['Tg'],row['Lab'])
          #code to extract the values and plot a timeseries.

如何提取列0:0n 中的所有值而不单独指定每个值。我希望将所有时间序列绘制在一个时间序列上?

【问题讨论】:

    标签: python numpy matplotlib time-series data-analysis


    【解决方案1】:

    我不太确定你到底想做什么,但np.loadtxt 是这里的方法。确保为您的文件正确设置分隔符

    data = np.loadtxt(fname="test.csv",delimiter=',',skiprows=1)
    

    现在data 的第 n 列是文件的第 n 列,行也是如此。

    您可以按行访问数据:data[n] 或按列访问数据:data[:,n]

    【讨论】:

      【解决方案2】:

      我建议使用pandas:

      import pandas as pd
      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.ylim(-1,10)
      plt.legend()
      

      【讨论】:

      • @atomh33Is - 确实有效。但是我的数据集比我显示的要大得多,我有大约 200 行这样的行。我想要每行单独的图表。可以做到这一点并将所有此类图形输出到单个 PDF 文件,例如?
      • @liv2hak 我不明白为什么不这样做,这可能需要一段时间,具体取决于您机器的规格。使用plt.savefig('yourfile.pdf') 获取pdf。
      • 我可以将上面的图表输出为pdf。我想要的,但我无法弄清楚,是多个图表,每个标签都写到一个 pdf 中。
      • @liv2hak 听起来像是一个不同的问题?
      • 你能看看stackoverflow.com/questions/33713034/…吗?谢谢。
      猜你喜欢
      • 2018-03-26
      • 2016-01-14
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多