问题
利用seaborn作图,发现时间周期为30天时,X轴刻度显示9个值,开始日期是2022年4月13日,这不是自己想要的值,我想要开始日期是2022年4月15日
解决方法
找个很多方法,包括看了官网matplotlib.pyplot.xticks — Matplotlib 3.5.2 文档,最终是在原来的locs
上加2 ,并将刻度值设置为起始日期。
plt.xticks(locs+2,date)
全部代码如下
day_num=30
name="股票"
fig, ax1 = plt.subplots(figsize=(16, 9))
sns.set(font='SimHei', font_scale=2,palette="Set2")
ax1 = sns.lineplot(x='date',y='price',data=gupiao,lw=2,color='red',marker='o')
plt.xticks(rotation=0)
plt.title(f'近{day_num}天{name}价格变化趋势图(元)', fontsize=30, pad=40)
ax1.set_xlabel(xlabel=None)
ax1.set_ylabel(ylabel=None)
x= np.array(list(gupiao['date']))
y= np.array(list(gupiao['price']))
locs, labels = plt.xticks()
# 日期为30天时,设置刻度
if day_num==30:start_date = gupiao['date'].max() - pd.Timedelta(days=day_num)x1 =pd.date_range(start_date, periods=9,freq='3.75D')s = pd.Series(np.random.rand(9), index=x1)d = pd.Series(s.index, index=s.index)date = d.dt.dateplt.xticks(locs+2,date)# 日期为30天时,设置刻度
if day_num == 30:plt.xticks(rotation=20)
# 设置图表标签
for a,b in zip(x,y):plt.text(a, b, '%.2f' % b, ha='center', va= 'bottom',fontsize=15)plt.show()
显示