Как отобразить только определенные значения оси X на графике - PullRequest
0 голосов
/ 22 сентября 2019

Я строю значения из кадра данных, где время - это ось X.Время отформатировано с 00:00 до 23:45.Я только хочу отобразить определенное время 00:00, 06:00, 12:00, 18:00 на оси X моего графика.Как это может быть сделано?Я опубликовал две цифры, первая показывает формат моего информационного кадра после установки индекса на время.А второй показывает мою фигуру.Спасибо за вашу помощь!

monday.set_index("Time", drop=True, inplace=True)

monday_figure = monday.plot(kind='line', legend = False, 
                            title = 'Monday Average Power consumption')
monday_figure.xaxis.set_major_locator(plt.MaxNLocator(8))

Редактировать: Добавление данных в виде текста:

Time,DayOfWeek,kW
00:00:00,Monday,5.8825
00:15:00,Monday,6.0425
00:30:00,Monday,6.0025
00:45:00,Monday,5.7475
01:00:00,Monday,6.11
01:15:00,Monday,5.8025
01:30:00,Monday,5.6375
01:45:00,Monday,5.85
02:00:00,Monday,5.7250000000000005
02:15:00,Monday,5.66
02:30:00,Monday,6.0025
02:45:00,Monday,5.71
03:00:00,Monday,5.7425
03:15:00,Monday,5.6925
03:30:00,Monday,5.9475
03:45:00,Monday,6.380000000000001
04:00:00,Monday,5.65
04:15:00,Monday,5.8725
04:30:00,Monday,5.865
04:45:00,Monday,5.71
05:00:00,Monday,5.6925
05:15:00,Monday,5.9975000000000005
05:30:00,Monday,5.905000000000001
05:45:00,Monday,5.93
06:00:00,Monday,5.6025
06:15:00,Monday,6.685
06:30:00,Monday,7.955
06:45:00,Monday,8.9225
07:00:00,Monday,10.135
07:15:00,Monday,12.9475
07:30:00,Monday,14.327499999999999
07:45:00,Monday,14.407499999999999
08:00:00,Monday,15.355
08:15:00,Monday,16.2175
08:30:00,Monday,18.355
08:45:00,Monday,18.902499999999996
09:00:00,Monday,19.0175
09:15:00,Monday,20.0025
09:30:00,Monday,20.355
09:45:00,Monday,20.3175
10:00:00,Monday,20.8025
10:15:00,Monday,20.765
10:30:00,Monday,21.07
10:45:00,Monday,19.9825
11:00:00,Monday,20.94
11:15:00,Monday,22.1325
11:30:00,Monday,20.6275
11:45:00,Monday,21.4475
12:00:00,Monday,22.092499999999998

Dataframe after setting index

Plot with incorrect x-axis values

Figure after adding coding from comment below

Изображение выше создано с использованием кода из комментария ниже.

1 Ответ

0 голосов
/ 23 сентября 2019

Убедитесь, что у вас есть индекс даты и времени , использующий pd.to_datetime при построении временных рядов.
Затем я использовал matplotlib.mdates, чтобы обнаружить нужные тики и отформатировать их на графике.Я не знаю, можно ли это сделать из панд с df.plot.
См. метки даты в matplotlib .Вы можете настроить HourLocator или использовать другой локатор в соответствии с вашими потребностями.Незначительные тики создаются так же, как ax.xaxis.set_minor_locator.Надеюсь, это поможет.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# Using your dataframe
df = pd.read_clipboard(sep=',')

# Make sure you have a datetime index
df['Time'] = pd.to_datetime(df['Time'])
df = df.set_index('Time')

fig, ax = plt.subplots(1,1)
ax.plot(df['kW'])
# Use mdates to detect hours
locator = mdates.HourLocator(byhour=[0,6,12,18])
ax.xaxis.set_major_locator(locator)
# Format x ticks
formatter = mdates.DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(formatter)

# rotates and right aligns the x labels, and moves the bottom of the axes up to make room for them
fig.autofmt_xdate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...