Гистограмма в Matplotlib с входным файлом
-
25-09-2019 - |
Вопрос
Я хочу сделать гистограмму в 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()
преобразовать его в номер.