【发布时间】:2012-06-30 05:15:49
【问题描述】:
如何打开来自不同目录的多个文本文件并将它们绘制在带有图例的单个图表上?
【问题讨论】:
-
plotfileworks 是单个文件的便捷方式:stackoverflow.com/questions/12311767/…
标签: python numpy matplotlib
如何打开来自不同目录的多个文本文件并将它们绘制在带有图例的单个图表上?
【问题讨论】:
plotfileworks 是单个文件的便捷方式:stackoverflow.com/questions/12311767/…
标签: python numpy matplotlib
我觉得最简单的方法是
from matplotlib import pyplot;
from pylab import genfromtxt;
mat0 = genfromtxt("data0.txt");
mat1 = genfromtxt("data1.txt");
pyplot.plot(mat0[:,0], mat0[:,1], label = "data0");
pyplot.plot(mat1[:,0], mat1[:,1], label = "data1");
pyplot.legend();
pyplot.show();
【讨论】:
假设您的文件如下所示并命名为 test.txt(空格分隔):
1 2
3 4
5 6
7 8
然后:
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
with open("test.txt") as f:
data = f.read()
data = data.split('\n')
x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[1] for row in data]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("Plot title...")
ax1.set_xlabel('your x label..')
ax1.set_ylabel('your y label...')
ax1.plot(x,y, c='r', label='the data')
leg = ax1.legend()
plt.show()
我发现浏览 gallery of plots on the matplotlib 网站有助于找出图例和坐标轴标签。
【讨论】:
如果你直接使用 pylab(包含在 matplotlib 中)而不是 matplotlib,这相对简单。从文件名和图例名称列表开始,例如 [ ('name of file 1', 'label 1'), ('name of file 2', 'label 2'), ...]。然后你可以使用类似下面的东西:
import pylab
datalist = [ ( pylab.loadtxt(filename), label ) for filename, label in list_of_files ]
for data, label in datalist:
pylab.plot( data[:,0], data[:,1], label=label )
pylab.legend()
pylab.title("Title of Plot")
pylab.xlabel("X Axis Label")
pylab.ylabel("Y Axis Label")
您可能还想在绘图命令中添加类似 fmt='o' 的内容,以便从线更改为点。默认情况下,matplotlib 和 pylab 会在同一个图形上绘图而不清除它,因此您可以多次运行 plot 命令。
【讨论】: