【问题标题】: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.csv、File1.csv、File2.csv、File3.csv、File4.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()