微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

matplotlib 日期格式化程序或日期定位器未显示第一个日期索引并从下一个开始

如何解决matplotlib 日期格式化程序或日期定位器未显示第一个日期索引并从下一个开始

我希望我的 x-ticks 仅将星期一显示为月-日。我尝试了解决方here 我得到了正确的刻度格式但是定位器有问题并且第一个日期未正确显示。根据我的索引,第一个刻度应该在 2 月 3 日。

重现我的结果的代码如下:

import seaborn as sns
import matplotlib.dates as mdates
import datetime as dt
import matplotlib.ticker as ticker
import pandas as pd

width,height = plt.figaspect(.30)
fig,ax = plt.subplots(1,1,figsize=(width,height),dpi=300,constrained_layout=False)
day_pal =  sns.color_palette("pastel",7)

date_df = pd.DataFrame()
date_df['ts'] = pd.Series(pd.date_range(START_DATE,periods=12*7,freq="D"))
date_df['weekday'] = date_df['ts'].dt.weekday

print(date_df.ts[0])
print(date_df.ts[len(x)-1])


x = list(date_df.ts)

daily_totals = range(len(x)) + np.random.randint(0,10,len(x))
ax.plot(x,daily_totals,lw=3,color='black',alpha=0.5)
plt.axvline(x[42],color="red",lw=5,linestyle="--",alpha = 0.6)
for wkdy in range(0,5):
    start = np.array(date_df[date_df.weekday==wkdy]['ts']) 
    end = start + pd.timedelta(days=1) 
    for i in range(len(start)):
        ax.axvspan(start[i],end[i],alpha=0.5,color = day_pal[wkdy])
start = np.array(date_df[date_df.weekday==5]['ts']) 
end = start + pd.timedelta(days=2) 
for i in range(len(start)):
    ax.axvspan(start[i],color = "gray")

ax.set_ylabel("Number of Trips")
ax.set_xlabel("Date")

ax.set_xlim(x[0],x[len(x) -1 ] )

ax.xaxis.set_major_locator(mdates.DayLocator(interval=7))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b-%d"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%b-%d"))
plt.xticks(rotation=65)
plt.show()

结果图:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?