Я хочу сделать Гистограмму в Matplotlib из входного файла, содержащего необработанные данные (.txt). Я сталкиваюсь с проблемами в обращении к входному файлу. Я предполагаю, что это должна быть довольно небольшая программа. Какие-либо гуру Matplotlib, какая-либо справка?
Я не прошу код, некоторые исходные данные должны поместить меня на правильный путь!
я бы рекомендовал использовать '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()
Вы не можете напрямую указать matplotlib создать гистограмму из входного файла - вам нужно будет открыть файл самостоятельно и получить из него данные. Как вы это сделаете, зависит от формата файла - если это просто файл с номером в каждой строке, вы можете просто пропустить каждую строку, strip ()
пробелы и символы новой строки и использовать float ()
, чтобы преобразовать его в число.