【问题标题】:Graphing multiple csv lists into one graph in python在python中将多个csv列表绘制成一张图
【发布时间】:2019-10-26 02:58:13
【问题描述】:

我有 5 个 csv 文件,我试图将它们放入 python 中的一个图表中。在每个 csv 文件的第一列中,所有数字都是相同的,我想将它们视为图中每个 csv 文件的 x 值。但是,每个 csv 文件中还有两列(总共 3 列),但我只想将第二列绘制为同一图表上每个 csv 文件的“y 值”,理想情况下得到 5 条不同的线, 每个文件一个。有人对我如何做到这一点有任何想法吗?

我已经将我的文件上传到变量 file_list

【问题讨论】:

  • 以下任何答案都可以解决您的问题吗?

标签: python pandas csv matplotlib graph


【解决方案1】:

读取第一个文件并创建一个列表列表,其中每个列表由该文件的两列填充。然后将其他文件一一读取,并将其中的 y 列附加到该列表的对应索引中。

【讨论】:

    【解决方案2】:

    您可以简单地多次调用 plot 。假设你from matplotlib.pyplot import plot,你可以重复相同的 x 值,或者有不同的值,它仍然可以工作。这是一个例子:

    【讨论】:

      【解决方案3】:
      from pathlib import Path
      import pandas as pd
      import matplotlib.pyplot as plt
      
      files = list(Path("/path/to/folder/with/csvs").glob("*.csv"))
      
      fig, ax = plt.subplots(figsize=(10, 10))
      x_col, y_col = "x_column_name", "y_column_name"
      
      for file in files:
          file_name = file.stem
          df = pd.read_csv(file)
          df.plot(x=x_col, y=y_col, ax=ax, label=file_name, legend=True)
      
      fig  # If using a jupyter notebook, and you've run a cell with %matplotlib inline
      

      【讨论】:

        【解决方案4】:

        假设您的文件名为File0.csvFile1.csvFile2.csvFile3.csvFile4.csv,您可以遍历它们,忽略第三列值并绘制 x 和 y 值。以下伪代码适用于 3 列

        import numpy as np
        import matplotlib.pyplot as plt
        
        for i in range(5):
            x, y, _ = np.loadtxt('File%s.csv' %i, unpack=True)
            plt.plot(x, y, label='File %s' %i)
        plt.legend()    
        plt.show()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-25
          • 2013-01-14
          • 2022-12-14
          • 2018-08-03
          • 2019-04-19
          相关资源
          最近更新 更多