Разница в методе Matplotlib

#matplotlib #python-3.8

#matplotlib #python-3.8

Вопрос:

У меня есть dataframe ниже как подмножество моих данных. Полный набор данных имеет «day_of_week» с понедельника по воскресенье и «час» в 24-часовом формате.

 day_of_week hour    record
0   Friday  00:00:00    23655
1   Friday  01:00:00    11806
2   Friday  02:00:00    6846
3   Friday  03:00:00    4284
4   Friday  04:00:00    5706
5   Friday  05:00:00    21557
6   Friday  06:00:00    71883
 

Ниже приведены типы данных:

 day_of_week    category
hour             object
record            int64
dtype: object
 

Я хочу создать несколько подзаголовков, по одному графику для каждого day_of_week, чтобы показать изменения в записи за 24-часовой период. Сначала я стараюсь делать только для «Пятницы».

Метод 1, и я получил сообщение об ошибке:

 fig = plt.figure()
ax = plt.axes()

ax.plot('hour', 'record', data = activity_by_hour)

TypeError: float() argument must be a string or a number, not 'datetime.time'
 

Метод 2 и создается линейная диаграмма:

 activity_by_hour.loc[activity_by_hour.day_of_week == 'Friday']
.plot('hour', 'record', 
        title = 'Friday',
        xlabel = "Hour", 
        ylabel = "Ride ('000)",
        legend = "", 
        linestyle = '--', linewidth = 2)

plt.xticks(ticks = (4 * 60 * 60) * np.arange(6)) # 4 hours interval consists of 14,400 seconds
plt.yticks(ticks = np.arange(0, 3.5e5, 5e4), labels = [int(num) for num in np.arange(0, 3.5e5, 5e4)/1000]);
 

введите описание изображения здесь

В чем разница в обоих методах? Как я могу нарисовать аналогичную диаграмму для понедельника — воскресенья на одном рисунке, который показывает 7 строк для каждого дня? Я попробовал «для цикла», и в итоге у меня получилось 7 диаграмм, а не подзаголовок.

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

1. Первый метод напрямую использует matplotlib. Второй метод использует библиотеку построения графиков pandas. Построение графиков Pandas основано на matplotlib и всегда работает с фреймом данных. Pandas имеет некоторые удобные функции, которые a.o. знает для обработки временных объектов. Обратите внимание, что существует также seaborn, который еще больше упрощает графики, связанные со статистикой.

2. @JohanC хорошо, отличная информация. означает ли это, что Matplotlib не способен отображать объект времени (т.Е. Ежедневные, почасовые данные)? Похоже, что библиотека построения графиков Pandas не позволяет отображать несколько строк на одном рисунке. Это правда?

3. Если вам нужно построить больше на том же подзаголовке с pandas, вы можете выполнить ax = activity_by_hour.loc[....].plot(...) и повторно использовать возвращенный подзаголовок ax для следующего графика: ax = activity_by_hour.loc[....].plot(..., ax=ax) . Matplotlib позволяет многое, но некоторые данные необходимо «массировать», чтобы они соответствовали его числовому формату. Панды знают много приемов массажа.