Python 如何在绘图上仅显示某些x轴值

Python 如何在绘图上仅显示某些x轴值,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在从一个以时间为x轴的数据框中绘制值。时间格式为00:00至23:45。我只想在绘图的x轴上显示特定时间00:00、06:00、12:00、18:00。如何做到这一点?我发布了两个图,第一个图显示了将索引设置为time后的数据帧格式。第二张是我的身材,谢谢你的帮助 monday.set_index("Time", drop=True, inplace=True) monday_figure = monday.plot(kind='line', legend = Fals

我正在从一个以时间为x轴的数据框中绘制值。时间格式为00:00至23:45。我只想在绘图的x轴上显示特定时间00:00、06:00、12:00、18:00。如何做到这一点?我发布了两个图,第一个图显示了将索引设置为time后的数据帧格式。第二张是我的身材,谢谢你的帮助

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

上面的图像是使用下面注释中的代码生成的。

在绘制时间序列时,确保您有一个using
pd.to\u datetime

然后,我使用
matplotlib.mdates
检测所需的刻度,并在绘图中格式化它们。我不知道是否可以从熊猫身上用
df.plot

看见您可以自定义小时定位器或使用不同的定位器来满足您的需要。次要记号的创建方法与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()

您不应该包括dataframe副本的图片并将数据粘贴为文本。图形显示,但现在绘图在x轴上没有值,只有一个标签上写着“时间”。感谢您的帮助,非常感谢!!似乎转换为datetime索引有问题。在我的例子中,时间作为字符串输入,然后用pandas转换为datetime索引。似乎您的时间是用
datetime.time
创建的,您没有合适的datetime索引来解释为什么没有显示任何值。你能检查一下你的
df.info()
?我的输出:RangeIndex:49个条目,0到48个数据列(共3列):Time 49非空datetime64[ns]…可能不是最佳解决方案,但如果您无法修复
datetime.Time
在创建数据帧之前,请使用以下内容替换pd.to_datetime行:
df['Time']=df['Time']。应用(lambda x:pd.to_datetime(str(x)))