【问题标题】:Read One Input File and plot multiple读取一个输入文件并绘制多个
【发布时间】:2015-08-31 02:17:18
【问题描述】:

我正在尝试读取以下格式的输入文件。其中Col[1] 是 x 轴,Col[2] 是 y 轴,col[3] 是某个名称。我需要为col[3] 的单独名称绘制多个折线图。例如:名称sdx,y 值将有一个折线图,而名称gg 和相对x,y 值将有另一个折线图。所有在一个输出图像,但单独的图表。 Python Matplotlib 可以吗?请务必将我重定向到任何示例。我已经检查了找不到任何东西。

akdj 12:00 34515 sd
sgqv 13:00 34626 sd
dfbb 13:00 14215 gg
ajdf 13:30 14224 gg
dsfb 13:45 25672 FW 
sfhh 14:00 85597 ad

感谢您的宝贵建议

【问题讨论】:

    标签: python numpy matplotlib graph plot


    【解决方案1】:

    您可以使用条件z=='some tag' 来索引xy 数组

    这是一个应该这样做的示例(基于your previous question 中的代码)。使用集合自动创建标签:

    import csv
    import datetime as dt
    import numpy as np
    import matplotlib.pyplot as plt
    
    threshold = 30000
    x,y,z = [],[],[]
    csv_reader = csv.reader(open('input.csv'))
    
    for line in csv_reader:
        y.append(int(line[2]))
        x.append(dt.datetime.strptime(line[1],'%H:%M'))
        z.append(line[3])
    
    x=np.array(x)
    y=np.array(y)
    
    tags = list(set(z))
    z=np.array(z)
    
    fig=plt.figure()
    
    for tag in tags:
        plt.plot(x[z==tag],y[z==tag],'o-',label=tag)
    
    fig.autofmt_xdate()
    
    plt.legend(loc=2)
    
    plt.savefig('test.png')
    

    【讨论】:

    • Tom .. 再次感谢您.. 但 ss 或 gd 只是示例.. 输入文件将有很多这样的行。当然,我们不能将它们全部列为列表。是否有任何自动识别的选项?
    • 我猜你理解得很好..我的意图是将两者合并并用类似的东西进行注释..像ssgd这样的名称将在标记stackoverflow.com/questions/5147112/…上进行注释
    • 您可以使用 python set 获取文件中的所有唯一标签。例如上面的list(set(z)) 将返回['sd','gg','FW','ad']。然后,您可以遍历该新列表,并为每个列表创建一个条件。我已经编辑了答案来做到这一点。
    • 你真是太棒了..如果你能帮我解决这个问题stackoverflow.com/questions/30832216/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2017-05-02
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多