目前我有一个数据框,其中索引是配置了东部标准时间 (EST) 的 DateTime 对象。
当我在 backtesting.py 中使用plot() 绘制此数据框时,x 轴显示为 UTC 时区,而不是EST 时区。有没有办法让我更改它以显示 EST 时区?
谢谢!
很遗憾,
backtesting.py
库的
plot()
函数本身没有提供直接在图表 x 轴上显示特定时区(例如 EST)的功能。
解决方案:
可以尝试以下方法来解决这个问题:
- 使用 Matplotlib 自定义 x 轴:
backtesting.py
库的
plot()
函数是基于 Matplotlib 构建的。可以利用 Matplotlib 的强大功能来定制 x 轴显示。
```python import matplotlib.pyplot as plt import matplotlib.dates as mdates from backtesting import Backtest, Strategy
# ... 的代码 ...
bt = Backtest(data, MyStrategy, ...) result = bt.run()
fig, ax = plt.subplots() result.plot(fig=fig) # 将 fig 参数传递给 plot 函数
# 设置 x 轴为 EST 时区 formatter = mdates.DateFormatter('%Y-%m-%d %H:%M:%S', tz=pytz.timezone('US/Eastern')) ax.xaxis.set_major_formatter(formatter)
# 旋转 x 轴标签以提高可读性 plt.xticks(rotation=45)
plt.show() ```
解释:
-
我们首先导入必要的库
matplotlib.pyplot
和matplotlib.dates
。 -
使用
result.plot(fig=fig)
将图表绘制到 Matplotlib 的fig
对象上。 -
使用
mdates.DateFormatter
创建一个格式化器,并指定US/Eastern
时区。 -
使用
ax.xaxis.set_major_formatter
将格式化器应用于 x 轴。 -
使用
plt.xticks(rotation=45)
旋转 x 轴标签以提高可读性。 -
在绘图前将数据转换为 EST:
另一种方法是在将数据传递给
plot()
函数之前,将其转换为 EST 时区。
```python import pandas as pd # ... 的代码 ...
# 假设的数据框名为 'df',并且索引为 DateTimeIndex df.index = df.index.tz_convert('US/Eastern')
bt = Backtest(df, MyStrategy, ...) result = bt.run() result.plot() ```
解释:
-
我们使用
pandas
库中的tz_convert
函数将数据框的索引转换为US/Eastern
时区。 -
然后,我们将转换后的数据传递给
Backtest
和plot()
函数。
请注意,需要安装
pytz
库来处理时区。 可以使用以下命令安装它:
pip install pytz
希望这些方法可以帮助在
backtesting.py
生成的图表中正确显示 EST 时区!