Гистограмма в Matplotlib с входным файлом - PullRequest
5 голосов
/ 07 апреля 2010

Я хочу сделать гистограмму в Matplotlib из входного файла, содержащего необработанные данные (.txt). Я сталкиваюсь с проблемами при обращении к входному файлу. Я думаю, это должна быть довольно маленькая программа. Любой гуру Matplotlib, любая помощь?

Я не прошу код, некоторые входные данные должны поставить меня на правильный путь!

Ответы [ 2 ]

9 голосов
/ 07 апреля 2010

Я бы рекомендовал использовать ' loadtxt ', который на самом деле находится в библиотеке NumPy. В Matplotlib (csv2rec) есть связанные функции, но Matplotlib фактически стандартизирует loadtxt.

Вот как это работает:

from matplotlib import pyplot as PLT

with open('name_of_your_file.csv') as f:
  v = NP.loadtxt(f, delimiter=",", dtype='float', comments="#", skiprows=1, usecols=None)

'v', объект, возвращаемый из 'loadtxt', является массивом n x m NumPy.

'loadtxt' принимает файл или дескриптор файла. Пример выше имеет большую часть сигнатуры метода. 'skiprows' - это целое число, которое определяет количество строк, считая от вершины, которые вы хотите пропустить; обычно устанавливается значение «1», чтобы пропустить строку заголовка; «usecols» начинается с «0» и представляет собой список, в котором перечислены столбцы, которые вы хотите включить («None» - значение по умолчанию и означает «включить все») Другие параметры работают как положено.

Чтобы построить гистограмму из этих данных:

from matplotlib import pyplot as PLT

v_hist = NP.ravel(v)   # 'flatten' v
fig = PLT.figure()
ax1 = fig.add_subplot(111)

n, bins, patches = ax1.hist(v_hist, bins=50, normed=1, facecolor='green')
PLT.show()
0 голосов
/ 07 апреля 2010

Вы не можете напрямую сказать matplotlib создать гистограмму из входного файла - вам нужно открыть файл самостоятельно и получить из него данные. То, как вы это сделаете, зависит от формата файла - если это просто файл с номером в каждой строке, вы можете просто просмотреть каждую строку, strip() пробелы и новые строки, и использовать float() для преобразования его в номер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...