python - 如何根据位于一个目录中的不同文件绘制不同的子图?

标签 python pandas matplotlib subplot

我有一个包含 10 个不同的 txt 文件的目录。每个 txt 文件包含一个 x 行和一个 y 行,文件的结构始终相同,但值彼此不同。我想绘制多个子图(总共 10 个,只有一个数字!),每个子图应该代表一个文件。换句话说,最后我想要十个不同的情节,这些情节与 txt 文件一致。 我的第一种方法如下:

%matplotlib inline
import glob
import pandas as pd
import matplotlib.pyplot as plt

data_path = 'C:\\Users\\MyPath'

fig, ax = plt.subplots(nrows=5, ncols=2, figsize=(8, 6))
fig.tight_layout()

files = glob.glob(data_path+'/*.txt')

for file in files:
    df = pd.read_csv(file)
    for row in range(5):
        for col in range(2):
            ax[row][col].plot(df['time'], df['signal'], c='green')

我的代码中的问题是所有文件都绘制在每个子图中,请参见示例: Example subplots 它在绘制之前遍历整个文件,但它应该在每个新文件处停止……我该如何解决这个问题,以便在每个子图中只“表示”一个特定文件? 如果有任何建议,我将不胜感激。请记住,我不是专业人士。感谢您提前提供的帮助。

最佳答案

ax 是 Axes 的 numpy ndarray - 将其展平并使用文件对其进行迭代。

...
for axn,file in zip(ax.flatten(),files):
    df = pd.read_csv(file)
    axn.plot(df['time'], df['signal'], c='green')

或者:

...
for axn,file in zip(ax.flatten(),files):
    df = pd.read_csv(file)
    df.plot(x='time', y='signal', ax=axn, c='green')

https://matplotlib.org/3.2.1/api/_as_gen/matplotlib.pyplot.subplots.html

关于python - 如何根据位于一个目录中的不同文件绘制不同的子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60902018/

相关文章:

python - BeautifulSoup 4 Python 网页抓取到 txt 文件

python - 如何使 random.choice 包含不选择?

Python - iterrows 的替代解决方案

python - 数据框列之间所有可能组合的计数

Python:如何从加拿大的 shapefile 创建等值线图?

python - 如何在 matplotlib 中移动刻度标签

python - 自然排序 Pandas DataFrame

python - 使用python加速将大型数据集从txt文件插入到mySQL

python - 根据 'hour' 日期时间选择 Pandas 数据框行

python - 如何将图例标签添加为条形图注释?