如何正确设置pyplot以绘制给定时区的日期? 我可以看到放置tzinfo对象的不同位置,但是所有这些要么什么都不做,要么不能像预期的那样远程工作。我从csv加载一个记录列表,每个记录都是[UTC中的原始时间戳,要绘制的数字]
import pytz
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
estZone=pytz.timezone('US/Eastern')
records=[['10/10/17 12:00','100'],['11/10/17 12:00','150'],['12/10/17 12:00','200']]
def parseDT(stampString):
return datetime.strptime(stampString,'%d/%m/%y %H:%M')
def plotGraph():
xvalues=[]
yvalues=[]
for r in records:
rdatetime=(parseDT(r[0])) #parseDT just returns naive DT
rdatetime=pytz.utc.localize(rdatetime)
rdatetime=rdatetime.astimezone(tz=estZone)
xvalues.append(rdatetime)
yvalues.append(int(r[1]))
fig,ax=plt.subplots(figsize=(8,3))
plt.plot_date(xvalues,yvalues,ls='solid',lw=1.5,aa=True,marker='None',color='g')
dayFmt=mdates.DateFormatter('%a-%b-%d')
hrFmt=mdates.DateFormatter('%H:00')
ax.xaxis.set_major_formatter(dayFmt)
ax.xaxis.set_major_locator(mdates.DayLocator())
ax.xaxis.set_minor_locator(mdates.HourLocator(byhour=[6,12,18]))
ax.xaxis.set_minor_formatter(hrFmt)
plt.grid(b=True, which='both',linestyle='dotted')
plt.show()
plotGraph()
这将生成(减去一些格式)此图:
实际上仍然是UTC。如果我省略了astimezone(tz=estZone)
,这与结果是相同的,即使我已经验证了该部分确实在工作。在
如果我继续将tz=estZone
传递给plt.plot_date
,那么这个图是相同的。没有变化。如何更改此项以根据UTC时间戳生成EST图?在
我以前曾尝试过将时区传递给x轴标签的日期格式化程序,但时区修饰符似乎是在定位器放置之后应用的,使所有标签在每个午夜或指定的小时后读取4小时。我意识到定位器也需要时区作为一个参数来抵消这一点。那就行了。在
相关问题 更多 >
编程相关推荐