Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Построение графика c использованием даты

#python #python_3x


У меня есть файл примерно с таким содержанием:

56 2016-11-18
4 2016-11-19
4 2016-11-20
244 2016-11-21
280 2016-11-22


Я хочу построить график средствами python, который будет показывать зависимость даты
от числа из первой колонки. Не могу понять как работать с датой в графиках.
    


Ответы

Ответ 1



Предположим, что данные находятся в файле: D:\temp\.data\594897.csv Вот решение, использующее Pandas модуль: import pandas as pd import matplotlib.pyplot as plt import matplotlib matplotlib.style.use('ggplot') fn = r'D:\temp\.data\594897.csv' # читаем CSV/TXT файл (разделённый пробелами) в DataFrame df = pd.read_csv(fn, sep='\s+', header=None, names=['Value','Date'], parse_dates=['Date']) # рисуем график df.plot(x='Date', y='Value', rot=0, figsize=(14, 10), grid=True, marker='o') plt.show() UPDATE: рисуем график с первого числа месяца: from pandas.tseries.offsets import * # добавим в DF строку с первым числом месяца df.loc[len(df)] = [np.nan, df.Date.min() - MonthBegin(1)] # устанавливаем `Date` в качестве индекса и отсортируем индекс df = df.set_index('Date').sort_index() df.plot(figsize=(14, 10), grid=True, marker='o')

Ответ 2



Вот пример кода, использующий только Matplotlib. Считаем, что даты уже преобразованы к date. #!/usr/bin/python # -*- coding: UTF-8 -*- from datetime import date import pylab import matplotlib.dates if __name__ == "__main__": # Даты, которые будут отложены по оси X xdata = [date(2010, 5, 25), date(2010, 7, 5), date(2010, 12, 1), date(2011, 3, 17), date(2011, 8, 2), date(2011, 11, 13), date(2012, 3, 15), date(2012, 4, 8), date(2012, 12, 21) ] # Данные, которые будут отложены по оси Y ydata = [0.4, 0.3, 0.5, 0.4, 0.6, 0.3, 0.2, 0.1, 0.0] # Преобразуем даты в числовой формат xdata_float = matplotlib.dates.date2num(xdata) # Вызовем subplot явно, чтобы получить экземпляр класса AxesSubplot, # из которого будем иметь доступ к осям axes = pylab.subplot(1, 1, 1) # Пусть в качестве меток по оси X выводится только год axes.xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%Y")) # Отобразим данные pylab.plot_date(xdata_float, ydata, fmt="b-") # Изменим левую границу pylab.xlim(xmin=matplotlib.dates.date2num(date(2010, 5, 1))) pylab.grid() pylab.show() Более подробно про работу с датами в Matplotlib можете почитать здесь - http://jenyay.net/Matplotlib/Date

Комментариев нет:

Отправить комментарий