Вопрос

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

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

Это было полезно?

Решение

Я бы порекомендовал использоватьloadtxt.«Что на самом деле в Numpy Bibly. Существуют связанные функции в 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», является NXM Numple Array.

«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()

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top