我想在2个月内每隔30分钟绘制一次电量消耗量 我的代码正在运行我的问题是在xlabel我不想要有范围(1,2 .... 48 * 58) 但是我希望在1到48 * 30之间有一些东西在secon 48 * 28之间给出1月1日的nme等等...
groups.append(l[-(len(l)%5):])
答案 0 :(得分:1)
通过在搜索引擎上搜索«python matplotlib使用日期作为xlabel»,您可以在Matplotlib文档中找到您想要的示例:https://matplotlib.org/examples/api/date_demo.html。
此示例假设您的xdata是日期,但现在情况并非如此。你需要创建一个日期列表并使用它而不是你的范围(48 * 58)列表,如下所示:
import pandas
xdata = pandas.date_range(
pandas.to_datetime("2008-01-01"),
pandas.to_datetime("2008-02-27 23:30:00"),
freq=pandas.to_timedelta(30,unit="m")).tolist()
这将创建一个从开始时间到结束时间的日期时间列表,频率为30分钟。
之后,您需要使用上面链接中的示例。在这里,它会根据您的需要进行复制和调整,但您需要使用它来正确设置它。您现在可以在matplotlib中找到更多使用日期的示例,因为您将使用日期列表作为绘图的输入。
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.cbook as cbook
# define locators for every month and every day
months = mdates.MonthLocator() # every month
days = mdates.DayLocator() # every day
monthsFmt = mdates.DateFormatter('%m')
# create the plot and plot your data
fig, ax = plt.subplots()
ax.plot(xdata, week.LoadNette)
# format the x ticks to have a major tick every month and a minor every day
ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(monthsFmt)
ax.xaxis.set_minor_locator(days)
# format the xlabel to only show the month
ax.format_xdata = mdates.DateFormatter('%m')
# rotates and right aligns the x labels, and moves the bottom of the
# axes up to make room for them
fig.autofmt_xdate()
plt.show()
在Matplotlib中使用日期可能令人生畏,但从长远来看,这比在特定时间内破解您想要的标签更好。