python - 为什么使用 datetime.striptime() 为 matplotlib 转换日期不显示整个日期
问题描述
更新:
添加如下代码修复问题
import matplotlib.dates as mdates
fig.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d'))
fig.gca().xaxis.set_major_locator(mdates.DayLocator())
'''this for minor ticks'''
fig.gca().xaxis.set_minor_formatter(mdates.DateFormatter('%Y/%m/%d'))
fig.gca().xaxis.set_minor_locator(mdates.WeekdayLocator(mdates.MONDAY))
'''disabled major and minor overlapping'''
fig.gca().xaxis.remove_overlapping_locs = False
或者:
plt.xticks(days, [i.date() for i in days])
==================================================== =======================
我正在做本书后面的练习,当我使用matlibplotdatetime.strptime()
中的文件转换日期时.csv
,它不会在 x 轴上显示整个日期,例如,列表中的转换日期是[2014-07-01,2014-07 -02,...,2014-07-31]列表中共有 32 个。
但最后当我在 matpltlib 中绘制它时,它只在 x 轴上 显示[2014-07-01,2014-07-05,2014-07-09,2014-07-13] 为什么它不显示整个日期?我可以修改它吗?
这是代码:
import csv
from matplotlib import pyplot as plt
from datetime import datetime
filename='sitka_weather_07-2014.csv'
with open(filename,'r') as f,open('xx.csv','w') as w:
content=csv.reader(f,delimiter=',',quotechar='"')
'''shift to title'''
header=next(content)
days,temps=[],[]
for value in content:
'''value[0] for the Date'''
a=datetime.strptime(value[0],'%Y/%m/%d')
days.append(a)
'''value[1] for Temp'''
b=int(value[1])
temps.append(b)
print(len(days))
#>> 31 #here is 32 days in list
fig=plt.figure(figsize=(10,6))
font={'weight':'normal',
'color':'cyan',
'fontsize':24,
}
plt.title('Weather',fontdict=font)
plt.xlabel('Date',fontdict=font)
plt.ylabel('Temperature',fontdict=font)
fig.autofmt_xdate()
for x,y in zip(days,temps):
plt.text(x,y+0.1,y,ha='center',va='bottom',fontsize=8,color='red')
plt.plot(days,temps,marker='o',mfc='red',mec='None')
plt.show()
解决方案
通常matplotlib
不显示所有标签,如果有很多标签,因为它看起来很混乱。如果您仍然想显示所有日期,您可以添加以下行:
plt.xticks(your_full_list_of_dates)
以上:
plt.show()
xticks也可以用于样式。
推荐阅读
- python - 用于在 Seaborn 条形图中绘制误差线的默认置信区间是多少?
- javascript - 如何在 jqGrid 中启用部分分组
- python - Python Selenium 多按钮消息框
- accelerated-mobile-page - 点击:AMP.setState 无法间歇性工作
- javascript - Fullcalendar AJAX 调用多次触发而不重新加载页面
- android - Does Twitter SDK requires Twitter App to login?
- python - Pandas filling missing value from yesterday data (same DataTime) in python
- events - 如何在 PAPI 中将 7 个事件放在一个事件集中
- sql-server - How to Find Previous and Next Value for Days in MSSQL?
- java - Regex for matching mobile topup codes and Url