在中绘制带时区的日期matplotlib.pyp

2024-10-02 10:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何正确设置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()

这将生成(减去一些格式)此图:

First output 实际上仍然是UTC。如果我省略了astimezone(tz=estZone),这与结果是相同的,即使我已经验证了该部分确实在工作。在

如果我继续将tz=estZone传递给plt.plot_date,那么这个图是相同的。没有变化。如何更改此项以根据UTC时间戳生成EST图?在


Tags: importdatetimepltaxtzutcsetpytz
1条回答
网友
1楼 · 发布于 2024-10-02 10:18:19

我以前曾尝试过将时区传递给x轴标签的日期格式化程序,但时区修饰符似乎是在定位器放置之后应用的,使所有标签在每个午夜或指定的小时后读取4小时。我意识到定位器也需要时区作为一个参数来抵消这一点。那就行了。在

相关问题 更多 >

    热门问题