Подтвердить что ты не робот

Как построить данные из нескольких текстовых файлов с двумя столбцами с легендами в Matplotlib?

Как открыть несколько текстовых файлов из разных каталогов и построить их на одном графике с легендами?

4b9b3361

Ответ 1

Это относительно просто, если вы используете pylab (в комплекте с matplotlib) вместо matplotlib напрямую. Начните с списка имен файлов и имен легенд, таких как [('имя файла 1', 'label 1'), ('имя файла 2', 'метка 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' в команду plot, чтобы перейти от строки к точкам. По умолчанию matplotlib с рисунками pylab на один и тот же рисунок не очищает его, поэтому вы можете просто запустить команду plot несколько раз.

Ответ 2

Предположим, что ваш файл выглядит так и называется 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()

Example plot:

Я нахожу, что просмотр галереи

Ответ 3

Я считаю, что самый простой способ -

 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();
  • label - это строка, которая отображается в легенде
  • вы можете построить как можно больше серий данных, прежде чем show() будет отображать их все на одном графике Это простой способ построения простых графиков. Для других опций в genfromtxt перейдите к этому url.